拒绝策略:
等待队列已经排满了,再也塞不下新任务了 同时, 线程池中的max线程也达到了,无法继续为新任务服务。 这个是时候我们就需要拒绝策略机制合理的处理这个问题。
四种内置的拒绝策略
一、AbortPolicy(默认):
直接抛出RejectedExecutionException异常阻止系统的正常运行
二、CallerRunsPolicy :
”调用者运行“ 一种调节机制,该策略既不会抛弃任务也不会抛出异常,而是将某些任务回退到调用者,从而降低新任务的流量
三、DiscardOldesPolicy :
抛弃队列中等待最久的任务,然后把当前任务加入到队列中,尝试再次提交当前任务
四、DiscardPolicy:
该策略默默丢弃无法处理的任务 , 不予任何处理也不抛出异常,(如果允许任务丢失,弱一致性,这是最好的一种策略)