728x90
반응형
*자세한 설명 생략
▷ 스레드(Thread) 란?
프로세스 내에서 실제로 작업을 수행하는 주체
▷ 스레드 풀(Thread Pool) 이란?
병렬 처리가 잦은 프로그램에서 사용하기 적합
스레드를 미리 생성하고, 작업 요청이 발생할 때마다 미리 생성된 스레드로 해당 작업을 처리하는 방식
*이때, 작업이 끝난 스레드는 종료되지 않으며 다음 작업 요청이 들어올 때까지 대기
▷ 스레드 풀(Thread Pool) 주요 용어
용어 | 설명 |
초기 스레드 | 생성될 스레드 |
코어 스레드 | 남아있을 최소 스레드 |
최대 스레드 | 스레드의 최대 개수 |
▷ 스레드 풀(Thread Pool) 생성
종류 | 설명 |
CachedThreadPool | - 초기 스레드 수, 코어 스레드 수가 0개, 최대 스레드 수(Integer.MAX_VALUE) - 작업이 들어올 때 마다 스레드를 생성, 생성된 스레드가 60초 동안 유휴상태면 스레드를 제거 |
FixedThreadPool | - 초기 스레드 수가 0개, 코어 스레드 수와 최대 스레드 수는 스레드 풀이 생성될 때 지정 - 존재하는 스레드의 개수보다 작업량이 많으면 스레드를 생성 - 생성된 스레드는 유휴상태가 오래되도 제거하지 않음 |
ThreadPoolExecutor | - 스레드를 관리하고 직접 생성 - CachedThreadPool과 FixedThreadPool도 결국 ThreadPoolExecutor를 사용 - new ThreadPoolExecutor( 코어 스레드 개수, 최대 스레드 개수, 유휴시간, 유휴시간 단위, 작업큐); |
▷ 스레드(Thread) 작업 처리 요청
종류 | 설명 |
execute() | - 작업 처리 결과를 반환하지 않음 - 작업 처리 도중 예외가 발생하면 스레드가 종료되고 해당 스레드는 스레드 풀에서 제거 - 다른 작업을 처리하기 위해 새로운 스레드를 생성 |
submit() | - 작업 처리 결과를 반환 - 작업 처리 도중 예외가 발생하더라도 스레드는 종료되지 않고 다음 작업을 위해 재사용 - 스레드의 생성 오버헤드를 방지하기 위해서라도 submit() 을 가급적 사용 |
▷ 스레드 풀(Thread Pool) 종료
종류 | 설명 |
shutdown() | - 현재 스레드가 처리중인 작업과 작업 큐에 대기하고 있는 작업을 모두 끝 마친 뒤 스레드 풀을 종료 |
shutdownNow() | - 현재 작업중인 스레드를 강제로 작업 중지 - 작업 큐 대기열에 남아있는 작업을 List<Runnable> 로 반환 |
awaitTermination() | - shutdown() 을 먼저 호출 - 전달된 timeout 시간 내로 모든 작업이 완료되면 true, 완료하지 못하면 처리중인 스레드를 강제 종료 후 false 반환 |
728x90
728x90
'▶ Back-End > 개념 요약' 카테고리의 다른 글
Sinks.many() 란? (0) | 2022.11.29 |
---|---|
Spring WebFlux Non-Blocking 방법 (0) | 2022.11.29 |
R2DBC 란? (0) | 2022.11.11 |
Gradle vs Maven (0) | 2022.11.09 |
Spring WebFlux 란? (0) | 2022.11.08 |
댓글