一、线程池的拒绝策略

java并发编程(11)-- 线程池 拒绝策略_线程池


当等待队列满时,且达到最⼤线程数,再有新任务到来,就需要启动拒绝策略。

JDK提供了四种拒绝策 略,分别是。

1. AbortPolicy:默认的策略,直接抛出 RejectedExecutionException 异常,阻⽌系统正常运 ⾏。

2. CallerRunsPolicy:既不会抛出异常,也不会终⽌任务,⽽是将任务返回给调⽤者,从⽽降低新 任务的流量。

3. DiscardOldestPolicy:抛弃队列中等待最久的任务,然后把当前任务加⼊队列中尝试再次提交任务。

4. DiscardPolicy:该策略默默地丢弃⽆法处理的任务,不予任何处理也不抛出异常。如果允许任务 丢失,这是最好的⼀种策略。


二、AbortPolicy拒绝策略

java并发编程(11)-- 线程池 拒绝策略_线程池_02


java并发编程(11)-- 线程池 拒绝策略_线程池_03





三、CallerRunsPolicy拒绝策略

java并发编程(11)-- 线程池 拒绝策略_抛出异常_04


四、DiscardOldestPolicy拒绝策略

java并发编程(11)-- 线程池 拒绝策略_抛出异常_05



五、DiscardPolicy拒绝策略

java并发编程(11)-- 线程池 拒绝策略_等待队列_06