码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA线程池的拒绝策略有哪几种?

时间:2020-01-04 16:58:58      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:strong   定义   通过   静默   不能   rtp   pool   就会   exce   

当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略:

AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。

这是线程池默认的拒绝策略,在任务不能再提交的时候,抛出异常,及时反馈程序运行状态。如果是比较关键的业务,推荐使用此拒绝策略,这样子在系统不能承载更大的并发量的时候,能够及时的通过异常发现。

DiscardPolicy:丢弃任务,但是不抛出异常。 如果线程队列已满,则后续提交的任务都会被丢弃,且是静默丢弃。

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

CallerRunsPolicy:由调用线程(提交任务的线程)处理该任务

用户还可以自定义拒绝策略:实现RejectExecutionHandler接口,实现rejectedExecution方法,自定义策略模式。

具体使用哪种策略,还得根据实际业务场景才能做出抉择。

JAVA线程池的拒绝策略有哪几种?

标签:strong   定义   通过   静默   不能   rtp   pool   就会   exce   

原文地址:https://www.cnblogs.com/gaopengpy/p/12149153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!