패스잇
CS 기초 · 중급

스레드 풀(Thread Pool)을 사용하는 주된 이유와 이점이 무엇인지 설명해주세요. 스레드 풀의 크기를 결정할 때 고려해야 할 요소들과, 잘못된 스레드 풀 사용으로 발생할 수 있는 문제점들을 함께 설명해주세요.

힌트 · 스레드 풀은 스레드 생성/소멸 오버헤드를 줄이고, 리소스 고갈을 방지하여 성능을 향상시킵니다. CPU 코어 수, 작업 유형(CPU-bound/IO-bound) 등을 고려하여 크기를 결정해야 합니다.

스레드 재사용자원 관리컨텍스트 스위칭CPU 바운드/I/O 바운드데드락/기아 상태

모범답안

스레드 풀을 사용하는 주된 이유는 스레드 생성 및 소멸에 드는 비용을 줄여 성능을 향상시키기 위해서입니다. 스레드를 미리 생성해두고 작업 큐에 들어온 작업을 할당함으로써, 매번 스레드를 새로 만드는 오버헤드를 없애고 스레드를 재사용하여 자원 효율성을 높입니다. 또한, 스레드 수를 제한하여 시스템 자원 고갈을 방지하고 과도한 컨텍스트 스위칭으로 인한 성능 저하를 막을 수 있습니다.

스레드 풀 크기를 결정할 때는 CPU 코어 수, 작업 유형(CPU 바운드/IO 바운드) 등을 고려해야 합니다. CPU 바운드 작업은 코어 수에 맞춰 스레드 수를 설정하고, IO 바운드 작업은 더 많은 스레드를 할당하는 것이 좋습니다.

잘못된 스레드 풀 사용은 데드락이나 기아 상태를 유발할 수 있습니다. 예를 들어, 스레드 풀 내의 모든 스레드가 다른 스레드의 작업 완료를 기다리는 경우 데드락이 발생할 수 있습니다. 또한, 특정 작업에만 스레드가 계속 할당되어 다른 작업이 실행되지 못하는 기아 상태도 발생할 수 있습니다. 따라서 스레드 풀 크기를 적절하게 설정하고, 작업 간의 의존성을 신중하게 관리해야 합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 동시성 / 멀티스레딩 면접 질문

← 동시성 / 멀티스레딩 면접 질문 전체 보기