线程池拒绝策略概览
- AbortPolicy:抛出
RejectedExecutionException拒绝新任务。 - CallerRunsPolicy:调用线程执行被拒绝的任务,不丢弃任务。
- DiscardPolicy:直接丢弃新任务。
- DiscardOldestPolicy:丢弃最早的未处理任务。
CallerRunsPolicy 策略详解
- 适用场景:当任务不能被丢弃,且应用程序可以容忍处理延迟时。
- 工作机制:如果线程池未关闭,执行
execute方法的线程将直接运行被拒绝的任务。
CallerRunsPolicy 策略的风险
- 主线程阻塞:如果被拒绝的任务非常耗时,并且是主线程提交的,可能会导致主线程阻塞。
- 性能影响:可能导致程序整体性能下降,因为新任务的提交速度会降低。
CallerRunsPolicy 策略的解决方案
- 增加队列容量:在内存允许的情况下,增加阻塞队列的大小,以容纳更多任务。
- 调整线程池参数:调整
maximumPoolSize以提高任务处理速度,减少内存溢出的风险。

最低0.47元/天 解锁文章
1121

被折叠的 条评论
为什么被折叠?



