线程池参数设置是一个常考的难点,下面逐一进行分析
任务拒绝策略
任务拒绝策略具有不同的适用场景
-
AbortPolicy:丢弃任务并抛出RejectedExecutionException异常,是线程池默认的拒绝策略,抛出异常有利于帮助反馈程序的运行状态。所以在关键业务推荐使用此拒绝策略,这样在系统不能承载更大的并发量的时候,能及时通过异常发现。
-
DiscardPolicy:丢弃任务,不抛异常。由于可能无法发现系统异常状态,还得根据实际业务是否允许丢弃老任务来认真衡量。
-
DiscardOldestPolicy:丢弃队列最前面的任务,然后重新提交被拒绝的任务。
-
CallerRunsPolicy:由调用线程(提交任务的线程)处理改任务。让所有任务都执行完毕,所以就适合大量计算的任务类型去执行。