线程池参数和设置相关

线程池参数设置是一个常考的难点,下面逐一进行分析

任务拒绝策略

任务拒绝策略具有不同的适用场景

  1. AbortPolicy:丢弃任务并抛出RejectedExecutionException异常,是线程池默认的拒绝策略,抛出异常有利于帮助反馈程序的运行状态。所以在关键业务推荐使用此拒绝策略,这样在系统不能承载更大的并发量的时候,能及时通过异常发现。

  2. DiscardPolicy:丢弃任务,不抛异常。由于可能无法发现系统异常状态,还得根据实际业务是否允许丢弃老任务来认真衡量。

  3. DiscardOldestPolicy:丢弃队列最前面的任务,然后重新提交被拒绝的任务。

  4. CallerRunsPolicy:由调用线程(提交任务的线程)处理改任务。让所有任务都执行完毕,所以就适合大量计算的任务类型去执行。