하나의 요청마다 하나의 스레드가 처리할 수 있게 한다. 1:1 맵핑
요청마다 스레드를 생성하고 폐기하게 되면 스레드의 생성에 시간을 소비하기 때문에 요청 처리가 더 오래 걸린다.
처리 속도 < 요청 속도
스레드마다 메모리를 점유하기 때문에 메모리 여유 공간이 사라진다.
Queue에 request들이 들어오게 되면 스레드 풀에 형성되어 있는 스레드를 1:1 맵핑하여 요청을 처리하고, 사용한 스레드는 스레드 풀에 반납(release)하게 된다.
-> 스레드 생성시간을 감소 시킬 수 있으며, 스레드가 무제한으로 생성되는 것을 방지한다.
CPU bound 프로세스의 경우 CPU 코어보다 1~2개 많이
I/O bound 프로세스의 경우 CPU 코어보다 1.5~3배 성능테스트를 해보며 찾는다.
스레드 풀에 존재하는 스레드들이 모든 요청을 다 처리중일 경우 더이상 처리할 수 있는 스레드가 존재하지 않기 때문에 스레드 풀의 요청을 저장하는 Queue의 크기를 확인하고 제한해야한다. Queue에 제한이 없는경우 request들이 무한히 쌓인다.