그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Concurrency
Concurrency

스레드 풀 포화 정책은 무엇이며 어떻게 선택하나요?

실무4/5
설계5/5
인간4/5
기초2/5

면접관의 질문 의도

정책 이름을 외워서 나열하는지, 아니면 거부 순간 호출 경로·큐·업스트림 풀에 어떤 영향이 전파되는지를 같이 보고 고르는지를 가른다. CallerRunsPolicy의 연쇄 포화 같은 코너 케이스를 짚으면 깊이가 드러난다.

큐레이션 답변

학습 자료

ThreadPoolExecutor는 core와 max 스레드, workQueue가 모두 찼을 때 신규 작업을 RejectedExecutionHandler로 넘긴다. 기본 제공 정책은 네 개다. AbortPolicy는 예외를 던져 호출자에게 책임을 넘기고, CallerRunsPolicy는 호출 스레드가 직접 작업을 실행해 자연스러운 백프레셔를 만든다. DiscardPolicy는 조용히 버리고, DiscardOldestPolicy는 큐 맨 앞 작업을 버린 뒤 새 작업을 받는다. 어떤 정책도 "안전한 기본값"이 아니라, 처리 보장이 중요한지·지연을 호출 경로에 전가해도 되는지·유실을 감수할 수 있는지를 보고 고른다.

좋은 답변 구조

  1. 01포화가 발생하는 조건(core·max·workQueue가 모두 찬 상태)을 먼저 정의한다
  2. 02네 가지 기본 정책의 동작과 각자가 떠안는 비용을 짝지어 비교한다
  3. 03처리 보장·유실 허용·호출 경로 영향이라는 선택 기준으로 어느 상황에 무엇을 고르는지 제시한다
  4. 04커스텀 핸들러와 큐 상한·메트릭 설계를 묶어 마무리한다

자주 실수하는 포인트

AbortPolicy 기본값을 그대로 두고 거부 예외 처리·알림 경로를 비워둔다
CallerRunsPolicy를 만능 백프레셔로 오해해 호출자 풀이 같이 막히는 연쇄 포화를 놓친다
Discard 계열을 쓰면서 거부 카운터·로그를 남기지 않아 유실을 감지할 방법을 잃는다
workQueue를 무한대로 잡아 포화 신호를 숨긴 채 OOM으로 먼저 터지게 만든다

실무 맥락

  • 외부 API를 호출하는 비동기 작업 풀에 트래픽이 갑자기 몰리는 환경
  • 톰캣 스레드에서 별도 ExecutorService로 작업을 위임하는 동기 API 백엔드
  • Kafka·SQS 컨슈머가 로컬 풀에 작업을 떠넘기는 배치성 소비자
  • 스케줄러가 같은 풀에 주기적으로 작업을 밀어 넣는 알림·리포트 시스템

본인 경험에 녹이는 힌트

트래픽 폭주로 호출 스레드까지 같이 마른 장애를 겪었다면, CallerRunsPolicy의 연쇄 포화가 어떻게 퍼지는지 사례로 연결할 수 있다

거부된 작업을 외부 큐(Kafka·SQS 등)로 다시 밀어 넣어 유실을 막은 경험이 있다면, 커스텀 핸들러 설계 근거로 풀어낼 수 있다

거부율·큐 길이·활성 스레드 수를 대시보드로 잡아봤다면, 정책 선택과 관측성을 한 묶음으로 설명할 수 있다

큐 크기를 무한대로 두다 OOM을 본 경험이 있다면, 큐 상한 설정이 정책 선택보다 앞서야 하는 이유로 쓸 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1CallerRunsPolicy가 호출자 풀까지 마르게 만드는 연쇄 포화는 어떻게 막나요
Q2workQueue 크기와 maxPoolSize는 어떤 신호를 보고 같이 튜닝하나요
Q3커스텀 RejectedExecutionHandler를 만든다면 어떤 메트릭과 컨텍스트를 남기겠나요
Q4작업이 유실되면 안 되는 경우 거부된 작업을 어떻게 재처리 경로에 태우나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문