解决:java.util.concurrent.RejectedExecutionException

 一 发现RejectedExecutionException错误     

      今天查看服务器的时候发现了一些java.util.concurrent.RejectedExecutionException错误,这个是由于线程池里的线程忙不过来报出的。如下图:

像这种 RejectedExecutionException 错误,表明在Java应用程序中,一个任务尝试提交到线程池(ThreadPoolExecutor)去执行时被拒绝了,具体原因是线程池达到了其配置的容量限制,无法接纳更多的任务。下面是错误信息的详细解析:

  从上图可以看到以下线程池信息:

  • Running - 线程池当前处于运行状态。
  • pool size = 100 - 线程池配置的最大线程数为100,意味着它可以同时运行最多100个线程来处理任务。
  • active threads = 100 - 当前有100个线程正在活跃地执行任务,即所有的工作线程都在使用中。
  • queued tasks = 1000 - 任务队列的大小为1000,这意味着当所有线程都在使用时,额外的任务可以排队等待执行,但显然这个队列也已经满了。
  • completed tasks = 253 - 已经有253个任务在这个线程池中完成了执行。

查看报错时间点的cpu运行状态:

从cpu反映来看突然上升而且持续很短,这是由于更新了队列服务器信息一下全部涌过来,很多状态信息是重复的而且变化时间一般十几分钟,大多数信息基本是同样的状态可以忽略不处理,所以这个错误在这种业务环境下是不影响业务,也可以忽略不调整的。但也可以通过调整以下线程池参数优化掉这个错误。

三 解决错误(线程池参数调整)

1. 增加线程池的核心线程数或最大线程数
  • 核心线程数 (corePoolSize): 这些线程即使在空闲时也不会被销毁,增加核心线程数可以让更多的任务直接开始执行而不是等待。
  • 最大线程数 (maximumPoolSize): 设置更高的最大线程数可以容纳更多的并发任务,但也要注意不要设置得太高,以免耗尽系统资源。
2. 调整任务队列的容量
  • 如果你的应用能够容忍一定的延时,增大任务队列的大小可以让更多的任务排队等待执行,而不是直接被拒绝。但这也可能会增加任务的响应时间。
3. 更改拒绝策略
  • Java的ThreadPoolExecutor允许你自定义任务拒绝时的行为。默认情况下,当队列已满且线程数达到最大时,会使用AbortPolicy策略,直接抛出RejectedExecutionException。你可以改为:
    • CallerRunsPolicy: 让调用者所在的线程直接执行任务,这可能会影响主线程的性能。
    • DiscardPolicy: 直接丢弃任务,不执行也不抛出异常。适用于可丢弃的任务。
    • DiscardOldestPolicy: 丢弃队列中最旧的任务,然后尝试重新提交被拒绝的任务。适用于任务执行顺序不敏感的情况。
    • 自定义策略:根据应用需求实现自己的RejectedExecutionHandler

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/842302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT如何将生成的exe文件打包成安装包

一、生成exe文件 1、生成exe文件 QT编译模式选择release,然后点击编译: 2、找到exe文件 在开发文件夹下找到build-xxxxxxx-Release文件夹里面找到exe文件 3、相关依赖dll文件查找 新建个空文件夹将exe文件拷贝进去: 然后找到如下程序…

恒创科技:Linux 服务器和 Windows 服务器哪个更好?

选择正确的服务器系统至关重要,目前广泛使用的选项是 Windows 服务器 和 Linux 服务器,它们各有优缺点。本文将比较 Linux 与 Windows 服务器,让我们来看看它们的主要区别,然后再决定哪种操作系统适合使用。 主要区别:…

C++工具

try catch和throw的使用 代码: #include <iostream> #include <math.h> #include <exception>class MyException : public _exception { private:/* data */ public:MyException(/* args */);~MyException(); };MyException::MyException(/* args */) { }…

HTTP方法、状态码和请求过程

一、HTTP方法概念&#xff1a; HTTP客户端发出请求&#xff0c;告知服务端需要执行不同类型的请求命令&#xff0c;这些命令被称为HTTP方法。 简说:HTTP方法是告诉服务器要做什么。 1、GET方法&#xff1a;获取资源 作用&#xff1a; ①通常用于请求服务器发送某个资源&am…

Tensors张量操作

定义Tensor 下面是一个常见的tensor&#xff0c;包含了里面的数值&#xff0c;属性&#xff0c;以及存储位置 tensor([[0.3565&#xff0c;0.1826&#xff0c;0.6719],[0.6695&#xff0c;0.5364&#xff0c;0.7057]]&#xff0c;dtypetorch.float32,devicecuda:0)Tensor的属…

Bootstrap5

Bootstrap 5 是 Bootstrap 框架的最新版本&#xff0c;这是一个广受欢迎且功能强大的开源前端开发框架&#xff0c;专为快速构建响应式和移动优先的网站而设计。Bootstrap 由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 创建&#xff0c;它以 HTML、CSS 和 JavaScript 为基…

arthas笔记

arthas使用参考arthas文档 sc -d 类名 获取到类加载器哈希 sc -d com.test.service.TestServiceImpl 得到&#xff1a; xxxxxxxxxxxxxxxxxx xxxxxxxxxxxx classLoaderHash 18b4aac2根据类加载器调用bean方法 vmtool --action getInstances -c 18b4aac2 --className org.spri…

Sass的优缺点

Sass&#xff08;Syntactically Awesome Stylesheets&#xff09;是一种流行的CSS预处理器&#xff0c;它提供了一系列强大的功能&#xff0c;使得样式表的编写和维护更加高效和灵活。以下是Sass的优点和缺点&#xff1a; 优点&#xff1a; 提高可维护性&#xff1a;Sass的模…

【uniapp】uniapp基本介绍

目录 介绍体验uni-app优势功能框架图 uni-app组成和跨端原理基本语言和开发规范 编译器运行时&#xff08;runtime&#xff09;uni-app runtime包括3部分&#xff1a;基础框架、组件、API基础框架&#xff1a;组件&#xff1a;组件的扩展&#xff1a; API&#xff1a; 逻辑层和…

vue2的方法与监听

vue2的方法 不可以使用箭头函数 <template> <div><div>{{sum2()}}</div><button click"add">add</button> </div></template><script> export default {data(){return{name:"张三",num:20,num2:3…

Android 关于pm的用法

1 定义 Package Manager (pm)&#xff1a;用于安装、卸载、查询应用程序包信息等操作的命令行工具。 2 使用 2.1 安装应用程序 pm install /path/to/apkfile.apk2.2 卸载应用程序 pm install /path/to/apkfile.apk2.3 查询应用程序信息 pm list packages [-f] [-d] [-e] …

基于形态学滤波的心电信号ECG处理(MATLAB 2021B)

数学形态学简称形态学&#xff0c;在数学意义上&#xff0c;其基于集合理论、积分几何和网格代数&#xff0c;是一门严格建立在数学基础之上的学科&#xff0c;着重用来研究图像的几何结构和形状&#xff0c;因而称之为形态学。其基本思想是用结构元素对待分析图像进行“探测”…

机器人回调接口完善

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 免责声明&#xff1a;该工具仅供学习使用&#xff0c;禁止使用该工具从事违法活动&#xff0c;否则永久拉黑封禁账号&#xff01;&#xff01;&#xff01;本人不对任何工具的使用负责&am…

计算机类主题会议推荐之——ACAIB 2024

【北方民族大学40 周年校庆学术活动】 第四届自动化控制、算法与智能仿生学术会议(ACAIB 2024) 2024年6月7-9日 中国银川 往届均已见刊检索 EI、SCOPUS双检索 基本信息 会议官网&#xff1a;www.acaib.org 最终截稿时间&#xff1a;2024年6月3日晚23&#xff1a;…

网络编程——大端序小端序

网络编程——大端序小端序 大端序&#xff08;Big Endian&#xff09;和小端序&#xff08;Little Endian&#xff09;1. 大端序&#xff08;Big Endian&#xff09;2. 小端序&#xff08;Little Endian&#xff09;3. 举例说明4. 使用场景5. 转换 网络协议中的网络字节序原因具…

Mac 电脑给android手机传输文件提示 No android device found

在开发过程中&#xff0c;我们有时候会有在电脑和手机之间传输文件的需求。 Mac电脑给android手机传输文件并不是很方便。 Google 官方提供了一个软件叫Android File Transfer&#xff0c;这个软件免费且好用。 Android File Transfer下载地址 但是使用过程中会遇到一些问题…

白银现货价格对这两种形态形成突破 应当予以关注

在白银现货价格分析和交易中&#xff0c;突破这个行为一直是一个重要的、具有可分析性的市场动作。本文要讨论的&#xff0c;是基于价格形态之上的突破行为&#xff0c;下面我们就来看看。 中继形态的突破。白银现货价格波动中有中继形态有反转形态&#xff0c;中继形态的意思是…

Java代码——@Mock注入失效,注入对象始终为null

现象&#xff1a; 最近在使用Mock对象做单元测试&#xff0c;但是发现mock的对象始终为null. 代码如下&#xff1a; package com.****.cache;import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.Mock…

Linux-命令

添加权限方法及注意事项: 字母权限法很灵活,无论目录还是文件都可以随意添加删除超级权限 chmod us ... 添加SUID chmod gs ... 添加SGID chmod s ...同时添加SUID和SGID chmod -s ...同时删除SUID和SGID chmod ot ...添加Sticky chmod t ...同上 数字权限表示法添加/删除…

【软考高项】- 2024.05.25 第一批考情介绍

一、选择题 1、信息化融合包含内容&#xff0c;产品&#xff0c;产业&#xff0c;等。 2、it内部审计 3、排列活动的数据表现工具 4、费用现值法 5、数据安全法 6、专利&#xff0c;外观设计&#xff0c;实用新型 7、有好几个过程定义和作用。 8、甲乙两公司&#xff0…