引言
ThreadPoolExcutor是JDK自带的线程池,也是我们在创建线程池时经常用到的创建方法。对线程池稍微有了解的同学都知道,线程池是一种典型的池化缓存设计。JDK自带了四种任务拒绝策略,但是有时候是不能满足我们实际的业务需求的,所以此时我们需要自定义拒绝策略,来处理被线程池拒绝的任务。
自带线程池拒绝策略介绍
如何自定义拒绝策略
一、自带线程池拒绝策略介绍
JDK自带的线程池拒绝策略有如下四种:
1、 DiscardPolicy: 默默丢弃无法处理的任务,不予任何处理;
public static class DiscardPolicy implements RejectedExecutionHandler {
public DiscardPolicy() { }
public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
}
}
2、DiscardOldestPolicy: 丢弃队列中最老的任务, 尝试再次提交当前任务;
public static class DiscardOldestPolicy implements RejectedExecutionHandler {
public DiscardOldestPolicy() { }
public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
if (!e.isShutdown()) {
e.getQueue().poll();
e.execute(r);
}
}
}</