线程池的四种拒绝策略。
面试扯到这里的时候,可以说一下,说完应该差不多了
1.AbortPolicy
这是线程池默认的拒绝策略。
丢弃该任务并抛出RejectedExecutionException异常。
抛出异常让开发者发现,方便及时处理,适用于一些比较重要的业务场景。
2.DiscardPolicy
丢弃该任务不抛出异常,线程队列已满的情况下,后进来的任务都丢弃。
相比默认的拒绝策略,这个策略就显得不怎么重要,适用于一些不重要的业务,如统计一些无关紧要但是又需要的数据。
3.DiscardOldestPolicy
丢弃队列最前面的任务,然后重新提交被拒绝的任务。
因为最前面的任务肯定是执行时间最久的。
可以理解为杀熟,生人杀一半,熟人大满贯。
4.CallerRunsPolicy
谁提交的谁执行。谁拉的*谁擦屁股