RejectedExecutionHandler — 실행 거부 태스크를 위한 핸들러

RejectedExecutionHandler — 실행 거부 태스크를 위한 핸들러

RejectedExecutionHandlerThreadPoolExecutor실행할 수 없는 태스크를 처리하는 방법을 정의하는 인터페이스예요. 거부 정책을 커스터마이즈하려면 구현하거나, 제공된 정책(AbortPolicy, CallerRunsPolicy, DiscardOldestPolicy, DiscardPolicy) 중 하나를 써요.

출처: Java API Reference

본문

개념 이해하기

RejectedExecutionHandlerThreadPoolExecutor가 실행할 수 없는 태스크를 위한 핸들러예요.

public interface RejectedExecutionHandler

제공되는 정책 구현:

  • ThreadPoolExecutor.AbortPolicyRejectedExecutionException을 던짐 (기본)
  • ThreadPoolExecutor.CallerRunsPolicy — 호출자 스레드에서 태스크 실행
  • ThreadPoolExecutor.DiscardPolicy — 조용히 버림
  • ThreadPoolExecutor.DiscardOldestPolicy — 가장 오래된 태스크를 버리고 다시 시도

메서드

void rejectedExecution(Runnable r, ThreadPoolExecutor executor)

ThreadPoolExecutorexecute로 태스크를 받아들일 수 없을 때 호출될 수 있는 메서드예요. 스레드나 큐 슬롯이 한계를 초과해 더 없거나, executor가 종료됐을 때 발생할 수 있어요.

대안이 없으면 비검사 RejectedExecutionException을 던질 수 있고, 이는 execute 호출자에게 전파돼요.

  • r — 실행이 요청된 태스크
  • executor — 이 태스크를 실행하려 시도하는 executor
  • RejectedExecutionException — 해결책이 없을 때

더 알아보기 (Learn more)