RejectedExecutionHandler — 실행 거부 태스크를 위한 핸들러
RejectedExecutionHandler — 실행 거부 태스크를 위한 핸들러
RejectedExecutionHandler는 ThreadPoolExecutor가 실행할 수 없는 태스크를 처리하는 방법을 정의하는 인터페이스예요. 거부 정책을 커스터마이즈하려면 구현하거나, 제공된 정책(AbortPolicy, CallerRunsPolicy, DiscardOldestPolicy, DiscardPolicy) 중 하나를 써요.
본문
개념 이해하기
RejectedExecutionHandler는 ThreadPoolExecutor가 실행할 수 없는 태스크를 위한 핸들러예요.
public interface RejectedExecutionHandler
제공되는 정책 구현:
ThreadPoolExecutor.AbortPolicy—RejectedExecutionException을 던짐 (기본)ThreadPoolExecutor.CallerRunsPolicy— 호출자 스레드에서 태스크 실행ThreadPoolExecutor.DiscardPolicy— 조용히 버림ThreadPoolExecutor.DiscardOldestPolicy— 가장 오래된 태스크를 버리고 다시 시도
메서드
void rejectedExecution(Runnable r, ThreadPoolExecutor executor)
ThreadPoolExecutor가 execute로 태스크를 받아들일 수 없을 때 호출될 수 있는 메서드예요. 스레드나 큐 슬롯이 한계를 초과해 더 없거나, executor가 종료됐을 때 발생할 수 있어요.
대안이 없으면 비검사 RejectedExecutionException을 던질 수 있고, 이는 execute 호출자에게 전파돼요.
r— 실행이 요청된 태스크executor— 이 태스크를 실행하려 시도하는 executorRejectedExecutionException— 해결책이 없을 때