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

四种拒绝策略
1、默认:AbortPolicy 直接抛异常

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
throw new RejectedExecutionException("Task " + r.toString() +
" rejected from " +
e.toString());
}
}
2、CallerRunsPolicy 如果线程池没有关闭 执行run方法

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
if (!e.isShutdown()) {
r.run();
}
}
}
3、DiscardOldestPolicy 如果线程池没有关闭,会将队列最强面的任务弹出(淘汰),并将新的任务放入到对流末尾

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
if (!e.isShutdown()) {
e.getQueue().poll();
e.execute(r);
}
}
4、DiscardPolicy 什么也不做

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
}
本文来自博客园,作者:skystrivegao,转载请注明原文链接:https://www.cnblogs.com/skystrive/p/19021346
整理不易,如果对您有所帮助 请点赞收藏,谢谢~
浙公网安备 33010602011771号