요청마다 스레드를 생성하는 경우
그래서 나온게 thread pool
미리 스레드를 여러 개 만들어 놓고 재사용
→ 스레드 생성 시간 절약
제한된 개수의 스레드를 운용
→ 스레드가 무제한으로 생성되는 것을 방지
그럼 언제 사용?
→ 여러 작업을 동시에 처리해야 할 때
thread per request 모델
task를 subtask로 나눠 동시에 처리
순서 상관없이 동시 실행이 가능한 task 처리
Tread pool 사용 팁
스레드 풀에 몇 개의 스레드를 만들어 두는 게 적절한가?
스레드 풀에서 실행될 task 개수에 제한이 없다면 스레드 풀의 큐가 사이즈 제한이 있는지 꼭 확인할 것.
즉, 사이즈 제한이 없는 큐는 상황에 따라서 메모리를 고갈시키는 잠재적인 위험 요인이 될 수 있음.
→ 이때 큐가 다 차면, 그 이후에 들어오는 요청이나 task같은 경우 일단 버리더라도 전체 시스템을 보호하는 형태로 진행한다.
pool 이라는 개념은 스레드에만 쓰이는 것이 아님.
process pool, connection pool도 있음.
출처 | 쉬운코드 유튜브