1. AbortPolicy:默认策略,在需要拒绝任务时抛出RejectedExecutionException;
1. CallerRunsPolicy:直接在 execute 方法的调用线程中运行被拒绝的任务,如果线程池已经关闭,任务将被丢弃;
1. DiscardPolicy:直接丢弃任务;
1. DiscardOldestPolicy:丢弃队列中等待时间最长的任务,并执行当前提交的任务,如果线程池已经关闭,任务将被丢弃
我们也可以自定义拒绝策略,只需要实现 RejectedExecutionHandler;需要注意的是,拒绝策略的运行需要指定线程池和队列的容量。
- AbortPolicy :丢弃任务,并抛出异常
- CallerRunsPolicy: 将被拒绝的任务添加到"线程池中正在运行的线程"中去执行
- DiscardPolicy 丢弃任务,但不抛出的异常
- DiscardOldestPolicy 丢弃队列最前面的任务,然后重新执行任务。 图片中丢弃线程4的任务,执行线程9的任务