线程池的拒绝策略应该怎么选

系列文章目录

关于线程池的文章可以看这里

线程池-一个很有意思的话题



前言

提示:可以先看上述文章中对线程池的描述:
线程池拒绝策略:卷起来,我就要强制给他分各类:
1、抛出不抛出异常:
拒绝策略会通知调用者任务无法被线程池处理。
示例:AbortPolicy

2、运行不运行任务:
拒绝策略允许调用者线程自己执行被拒绝的任务。
示例:CallerRunsPolicy

3、丢弃不丢弃任务:
拒绝策略静默地丢弃无法处理的任务,不执行也不抛出异常。

提示:以下是本篇文章正文内容,下面案例可供参考

一、四种拒绝策略使用场景

java中的ThreadPoolExecutor提供了四种拒绝策略(RejectedExecutionHandler),当任务无法提交给线程池执行。
(例如,当工作队列已满且线程数量已达到最大线程数时)时,这些策略定义了如何处理这些额外的任务。以下是四种预定义的拒绝策略及其用途和使用场景:

1、AbortPolicy:
这是默认的拒绝策略。当任务被拒绝时,策略会抛出RejectedExecutionException异常。

作用:通知调用者任务无法被线程池处理。
使用场景:当你想要确保所有任务在提交时都得到处理,如果线程池无法处理,则通知应用程序并允许它响应拒绝,如记录日志、触发报警等。

2、CallerRunsPolicy:
此策略不会丢弃任务,也不会抛出异常,而是由提交任务的线程自身来运行这个任务。
作用:调用者线程自己执行任务,减缓新任务的提交速度。
使用场景:在不想丢弃任务并且可以接受调用者执行任务的延迟时使用。这样可以降低新任务的提交速度,有助于"平滑"过载的任务进入线程池。

3、DiscardPolicy:</

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值