线程池拒绝策略应用场景

线程池拒绝策略应用场景简单回答 中止策略 无特殊场景 丢弃策略 无关紧要的任务 博客阅读量 弃老策略 发布消息 调用者运行策略 不允许失败场景 对性能要求不高 并发量较小 详细回答 1 AbortPolicy 中止策略 丢弃任务并抛出 RejectedExec 异常 这是线程池默认的拒绝策略 在任务不能再提交的时候 抛出异常 及时反馈程序运行状态 如果是比较关键的业务 推荐使用此拒绝策略 这样子在系统不能承载更大的并发量的时候 能够及时的通过异常发现 功能 当触发拒绝策

 

简单回答:

详细回答:

1.AbortPolicy中止策略:丢弃任务并抛出RejectedExecutionException异常。

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

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

使用此策略,可能会使我们无法发现系统的异常状态。建议是一些无关紧要的业务采用此策略。例如,本人的博客网站统计阅读量就是采用的这种拒绝策略。

3.DiscardOldestPolicy弃老策略:丢弃队列最前面的任务,然后重新提交被拒绝的任务。

此拒绝策略,是一种喜新厌旧的拒绝策略。是否要采用此种拒绝策略,还得根据实际业务是否允许丢弃老任务来认真衡量。

4.CallerRunsPolicy调用者运行策略:由调用线程处理该任务。

5.dubbo中的线程拒绝策略。

6.Netty中的线程池拒绝策略。

Netty中的实现很像JDK中的CallerRunsPolicy,舍不得丢弃任务。不同的是,CallerRunsPolicy是直接在调用者线程执行的任务。而 Netty是新建了一个线程来处理的。所以,Netty的实现相较于调用者执行策略的使用面就可以扩展到支持高效率高性能的场景了。但是也要注意一点,Netty的实现里,在创建线程时未做任何的判断约束,也就是说只要系统还有资源就会创建新的线程来处理,直到new不出新的线程了,才会抛创建线程失败的异常。

7.activeMq中的线程池拒绝策略。

activeMq中的策略属于最大努力执行任务型,当触发拒绝策略时,在尝试一分钟的时间重新将任务塞进任务队列,当一分钟超时还没成功时,就抛出异常。

8.pinpoint中的线程池拒绝策略。

pinpoint的拒绝策略实现很有特点,和其他的实现都不同。他定义了一个拒绝策略链,包装了一个拒绝策略列表,当触发拒绝策略时,会将策略链中的rejectedExecution依次执行一遍。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223627.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:46
下一篇 2026年3月17日 下午1:46


相关推荐

  • pycharm查看python版本-pycharm如何设置python版本

    pycharm查看python版本-pycharm如何设置python版本直接上图 mac 环境 一 设置项目的 python 版本 File DefaultSetti 在弹出的界面上 参考下图 左上角的下拉框里 选择 python 解释器的版本即可 建议 直接安装 anaconda 这个已经集成了很多第三方的类库 二 添加第三方类库仍然在上图中 下面有一个 号按钮 点击进入下图 直接在搜索框里 搜索需要的第三方类库即可 以 tensorflow 为例 找到后点击

    2026年3月27日
    2
  • 手持频谱仪的使用_频谱仪使用教程视频

    手持频谱仪的使用_频谱仪使用教程视频手持频谱仪的使用

    2022年8月11日
    8
  • 局部静态变量的定义_C语言强制转换数据类型

    局部静态变量的定义_C语言强制转换数据类型C语言中定义的静态变量存放在栈区,动态分配的内存空间位于堆区。这题答案为F为大家科普一下知识C语言中局部变量存在栈里,全局变量存静态存储区。局部变量在栈空间上分配,这个局部变量所在的函数被多次调用时,每次调用这个局部变量在栈上的位置都不一定相同。局部变量也可以在堆上动态分配,但是记得使用完这个堆空间后要释放之。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放;…

    2025年6月21日
    5
  • UML用例图的作用、功能模块图作用与数据库设计三者关系

    UML用例图的作用、功能模块图作用与数据库设计三者关系这周周一 我们导师要求小组成员开会 我们分别汇报自己的工作 在会中 谈到了用例图 于是我们开始对大家熟悉的用例图进行探讨 经过探讨与自己的思考 我认为应该从以下几个问题来弄清楚用例图的作用 1 用例图由谁来做 为谁做 做完了有什么用途 用例图非常直观的的表达了客户的需求 大家想想我们在与客户沟通完成后 我们大脑中得到了什么 答案就是我们的用例图 仔细想想 难道不是吗 用例图把角色和角色完成的动作

    2026年3月17日
    2
  • OpenClaw 3.11 更新了哪些内容?一文看懂这次版本升级重点

    OpenClaw 3.11 更新了哪些内容?一文看懂这次版本升级重点

    2026年3月15日
    2
  • leetcode第一刷_Restore IP Addresses

    leetcode第一刷_Restore IP Addresses

    2022年2月6日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号