我们来看下ThreadPoolExecutor默认的四种拒绝策略:
DiscardOldestPolicy,DiscardPolicy,AbortPolicy,CallerRunsPolicy,源代码如下
所以自定义拒绝策略实现起来也是相对简单些只需要实现RejectedExecutionHandler接口的rejectedExecution方法即可代码如下
import java.util.concurrent.RejectedExecutionHandler;import java.util.concurrent.ThreadPoolExecutor;public class MyRejectExecutionHandler implements RejectedExecutionHandler { /** * 打印丢弃的任务 * @param r * @param executor */ @Override public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { System.out.println(""+r.toString()); }}