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) {}