java线程池拒绝策略有哪些?

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

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

这是线程池默认的拒绝策略,在任务不能再提交的时候,抛出异常,及时反馈程序运行状态。

如果是比较关键的任务,推荐使用此拒绝策略,这样子在系统不能承载更大的并发量的时候,能够及时地通过异常发现。

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

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

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

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

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

 

原文链接:

https://www.cnblogs.com/gaopengpy/p/12149153.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值