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
整理不易,如果对您有所帮助 请点赞收藏,谢谢~