前言
当线程池的任务队列满了之后,线程池会执行指定的拒绝策略来应对,常用的四种拒绝策略包括:CallerRunsPolicy、AbortPolicy、DiscardPolicy、DiscardOldestPolicy,此外,还可以通过实现RejectedExecutionHandler接口来自定义拒绝策略。
四种预置的拒绝策略:
1、CallerRunsPolicy
使用线程池的调用者所在的线程去执行被拒绝的任务,除非线程池被停止或者线程池的任务队列已有空缺。
2、AbortPolicy
直接抛出一个任务被线程池拒绝的异常。
3、DiscardPolicy
不做任何处理,静默拒绝提交的任务。
4、DiscardOldestPolicy
抛弃最老的任务,然后执行该任务。
5、自定义拒绝策略
通过实现接口可以自定义任务拒绝策略。