스레드 풀의 개념
병렬 처리가 많아지면 스레드의 생성 및 스케줄링에 메모리 사용량이 늘어납니다.
스레드 풀은 다수의 스레드를 미리 생성하여 특정 작업을 수행할 때 이용하는 기법으로, 이를 통해 스레드의 생성 및 스케줄링에 따른 메모리를 줄이고 효율적인 작업 관리를 할 수 있습니다.
이는 다수의 클라이언트 요청이 동시에 들어올 때, 서버에서 각 요청을 스레드로 처리해야 하는 상황에서 특히 중요합니다.
스레드 풀 구성요소
- 스레드 : 작업을 수행하는 단위
- 작업 큐 : 스레드 풀로 보내지는 작업들을 저장하는 공간
- 작업(태스크) : 스레드가 수행해야 될 작업
스레드 풀 동작방식
- 클라이언트가 작업을 스레드 풀에 제출하면 스레드 풀 작업 큐에 저장됩니다.
- 스레드 풀 내의 생성된 스레드들이 작업 큐에서 작업을 가져와 처리합니다.
스레드 풀 필요성
- 프로그램 성능 저하 방지 : 스레드들을 풀에 유지함으로써 스레드 생성 및 수거에 대한 비용을 줄여서 프로그램 전체적인 성능 저하를 방지할 수 있습니다.
- 작업 처리 지연 감소 : 스레드 풀을 사용하면 작업이 있을 때마다 스레드를 생성하지 않고 미리 만들어 놓은 스레드를 활용함으로써 작업을 즉시 처리할 수 있습니다.
- 자원 소모 방지 : 스레드의 개수를 제어할 수 있어서 시스템 부하를 방지할 수 있습니다.
'JAVA > 스레드' 카테고리의 다른 글
[JAVA] ExecutorService 인터페이스 (1) | 2023.10.11 |
---|---|
[JAVA] Executor 인터페이스 (0) | 2023.10.10 |
[JAVA] ReentrantLock 활용 Condition 인터페이스 (1) | 2023.10.04 |
[JAVA] wait(), notify(), notifyAll() 메서드 (2) | 2023.09.25 |
[JAVA] volatile 키워드의 활용 (0) | 2023.09.25 |