JUC学习-23-线程池拒绝策略

JUC学习-23-线程池拒绝策略

image


四种拒绝策略

1、默认:AbortPolicy 直接抛异常

image

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
throw new RejectedExecutionException("Task " + r.toString() +
" rejected from " +
e.toString());
}
}

2、CallerRunsPolicy 如果线程池没有关闭 执行run方法

image

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
if (!e.isShutdown()) {
r.run();
}
}
}

3、DiscardOldestPolicy 如果线程池没有关闭,会将队列最强面的任务弹出(淘汰),并将新的任务放入到对流末尾

image

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
if (!e.isShutdown()) {
e.getQueue().poll();
e.execute(r);
}
}

4、DiscardPolicy 什么也不做

image

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
}

posted @ 2025-08-04 13:55  skystrivegao  阅读(35)  评论(0)    收藏  举报