ThreadPoolExecutor:任务正在排队但未提交

2023-12-22

我们有一个场景,提交给 ThreadPoolExecutor 的任务长时间运行。当线程池启动时,我们以核心池大小 = 5、最大池大小 = 20 和队列大小 10 来启动它。在我们的应用程序中,大约有 10 个任务被提交。大多数时候,这些任务运行几分钟/小时然后完成。然而,有一种情况是所有 5 个任务都在 I/O 上挂起。结果,我的核心池大小达到了最大值,但我的 Threadpoolexecutor 队列未满。所以额外的 5 个任务永远没有机会运行。 请建议我们如何处理这种情况?在这种情况下,较小的队列是更好的选择吗?初始化 threadPool 时最佳队列大小是多少?

另外对于挂起的任务,有什么办法可以将线程从线程池中拉出来吗?在这种情况下,至少其他任务将有机会运行。


整体情况是这样的:

core pool size = 5,
max pool size = 20 and 
queue size of 10

提交了10个任务。其中有

  1. 5 个任务挂在 I/O 上 => 核心池大小的所有线程都被占用。因此没有空闲线程。
  2. 剩余 5 项任务。由于没有空闲线程且队列可容纳 10 个任务,因此将这 5 个线程排队到队列中。这些排队任务只有在队列已满或核心池中的任何线程空闲时才会执行。

因此,您的程序被挂起。

想了解更多动态ThreadPoolExecutor watch here http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html。该文档的要点如下:

  • 如果运行的线程少于 corePoolSize,则 Executor 始终倾向于添加新线程而不是排队。
  • 如果 corePoolSize 或更多线程正在运行,Executor 总是更喜欢对请求进行排队而不是添加新线程。
  • 如果请求无法排队,则会创建一个新线程,除非这超出了 MaximumPoolSize,在这种情况下,该任务将被拒绝。

EDIT
如果您想增加核心池大小,那么您可以使用setCorePoolSize(int corePoolSize) http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html#setCorePoolSize%28int%29。如果您增加corepoolsize然后,如果需要,将启动新线程来执行任何排队的任务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ThreadPoolExecutor:任务正在排队但未提交 的相关文章

  • 如何在 IDEA Intellij 上使用 Spring-boot 自动重新加载

    我写了一个基于Spring boot tomcat freemarker的项目 我运行成功 但是每当我修改一些模板和java类时 我必须重新启动服务器或使用Intellij上的 重新加载更改的类 菜单才能使更改生效 浪费很多时间 然后我尝试
  • 从文本文件中读取阿拉伯字符

    我完成了一个项目 在该项目中我读取了用记事本编写的文本文件 我的文本文件中的字符是阿拉伯语 文件编码类型是UTF 8 当在 Netbeans 7 0 1 中启动我的项目时 一切似乎都正常 但是当我将项目构建为 jar 文件时 字符以这种方式
  • 使用 Apache POI Excel 写入特定单元格位置

    如果我有一个未排序的参数 x y z 列表 是否有一种简单的方法将它们写入使用 POI 创建的 Excel 文档中的特定单元格 就好像前两个参数是 X 和Y 坐标 例如 我有如下行 10 4 100 是否可以在第 10 行第 4 列的单元格
  • 查询 MongoDB 集合中的字段。

    我正在尝试查询 mongodb 集合中的特定字段 这是我的代码和输出 Mongo m new Mongo DB db m getDB mydb DBCollection coll db getCollection student addin
  • 使用 Spring 控制器处理错误 404

    I use ExceptionHandler处理我的网络应用程序抛出的异常 在我的例子中我的应用程序返回JSON回应HTTP status用于对客户端的错误响应 但是 我正在尝试弄清楚如何处理error 404返回与处理的类似的 JSON
  • 我需要在 JFileChooser(打开模式)中显示不带扩展名的文件名。如何?

    我在打开模式下使用 JFileChooser 我需要显示不带扩展名的 文件名 字段 如何 我知道文件视图 它删除文件系统文件中的扩展名 但将所选文件中的扩展名保留在 文件名 字段中解释 http saveimg ru show image
  • 如何在 MSSQL 中获取 CURRENT_DATE?

    我正在使用 jpa 3 o 和 Hibernate 我有一个命名查询 SELECT COUNT wt id FROM WPSTransaction wt WHERE wt createdDate gt CURRENT DATE WPSTra
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • 可访问数据的 Java 约定。 (公共访问器和 Getter/命名)

    通过 Java API 您会看到大量冲突的命名和实践 这让我感到非常困惑 例如 The String http grepcode com file repository grepcode com java root jdk openjdk
  • Java:SortedMap、TreeMap、可比较?如何使用?

    我有一个对象列表 需要根据其中一个字段的属性进行排序 我听说 SortedMap 和 Comparator 是实现此目的的最佳方法 我是否要与正在排序的类实现 Comparable 还是创建一个新类 如何实例化 SortedMap 并传入
  • 具有 JPA 持久性的 Spring 状态机 - 存储库使用

    我试图弄清楚如何轻松使用 Spring 状态机 包括使用 JPA 进行持久化 这是我正在处理的问题 不兼容的数据类型 工厂和持久性 在程序的某个时刻 我想使用连接到用户的状态机 有用于此目的的存储库 项目spring statemachin
  • Struts 1 到 Spring 迁移 - 策略

    我有一个legacy银行应用程序编码为Struts 1 JSP现在的要求是迁移后端 目前为 MVC to Springboot MVC 后续UI JSP 将迁移到angular Caveats 1 后端不是无状态的 2 会话对象中存储了大量
  • 在尝试使用 GPS 之前如何检查 GPS 是否已启用

    我有以下代码 但效果不好 因为有时 GPS 需要很长时间 我该如何执行以下操作 检查GPS是否启用 如果启用了 GPS 请使用 GPS 否则请使用网络提供商 如果 GPS 时间超过 30 秒 请使用网络 我可以使用时间或 Thread sl
  • 生成 equals 和 hashcode 时忽略属性

    假设我有一个类 Customer public class Customer private String firstName private String lastName private String doNotAddMeToEqual
  • 嵌套字段的 Comparator.comparing(...)

    假设我有一个这样的域模型 class Lecture Course course getters class Course Teacher teacher int studentSize getters class Teacher int
  • 使用单独的线程在java中读取和写入文件

    我创建了两个线程并修改了 run 函数 以便一个线程读取一行 另一个线程将同一行写入新文件 这种情况会发生直到整个文件被复制为止 我遇到的问题是 即使我使用变量来控制线程一一执行 但线程的执行仍然不均匀 即一个线程执行多次 然后控制权转移
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • Android UnityPlayerActivity 操作栏

    我正在构建一个 Android 应用程序 其中包含 Unity 3d 交互体验 我已将 Unity 项目导入 Android Studio 但启动时该 Activity 是全屏的 并且不显示 Android 操作栏 我怎样才能做到这一点 整
  • Errors/BindingResult 参数应在模型属性、@RequestBody 或 @RequestPart 参数之后立即声明

    我通过剖析示例应用程序来自学 Spring 然后到处添加代码来测试我在剖析过程中开发的理论 在测试添加到 Spring 应用程序中的一些代码时 我收到以下错误消息 An Errors BindingResult argument is ex
  • mybatis:使用带有 XML 配置的映射器接口作为全局参数

    我喜欢使用 XML 表示法来指定全局参数 例如连接字符串 我也喜欢 Mapper 注释 当我尝试将两者结合起来时 我得到这个例外 https stackoverflow com questions 4263832 type interfac

随机推荐

  • iOS 6 中 UIPickerView 选择行崩溃

    我的应用程序在 iOS 5 x 中完美构建和运行 但当我调用时它崩溃了selectRow inComponent animated 的方法UIPickerView在 iOS 6 中 code pickerview selectRow 1 i
  • 如何求这4个正方形的外角坐标? (如果图像旋转,形态闭/开不会保留正方形)

    我正在编码的工具中的第一个处理步骤是找到4个大黑色方块的外角坐标 然后 它们将用于进行单应变换 以便校正图像 取消旋转图像 也称为透视变换 最终获得矩形图像 这是 旋转和嘈杂 输入的示例 下载链接在这里 https i stack imgu
  • 邮差喷气背包 - 测试嵌套数据

    我在邮递员中进行了测试 并且响应返回了 嵌套 数据 我的意思是我们有响应的 数据 部分和 消息 部分 内部数据还有大量其他字段 这些字段是我需要使用 Jetpack 进行验证的字段 我怎样才能到达这些领域 JSON 响应如下所示 Data
  • Asp.net mvc 3 - 自定义模型绑定

    我有一个这样的模型 public string Name get set public IEnumerable
  • 意外返回匿名结构

    我正在尝试实现一种方法 该方法返回基于原始结构的修改后的结构 例如 type Project struct Username string Id uint Alias string Data json RawMessage Scheme S
  • Assert() - 它有什么用?

    我不明白的目的assert 我的讲师说断言的目的是发现错误 例如 double divide int a int b assert 0 b return a b 上述断言有道理吗 我认为答案是肯定的 因为如果我的程序 不应该与0 数字零 但
  • Karate 0.9.5:无法在并行执行中获取命令行选项

    我正在尝试将我的项目更新到最新的空手道版本 0 9 5 除了并行执行之外 一切正常 它没有考虑我使用命令行 Dkarate options 运行的标签 这是我的 TestParallel java 类 public class QaaTes
  • 我们可以将 XPath 与 BeautifulSoup 一起使用吗?

    我正在使用 BeautifulSoup 抓取 URL 并使用以下代码来查找td其类别为的标签 empformbody import urllib import urllib2 from BeautifulSoup import Beauti
  • 如何获取点击列表项的上下文以在 Nativescript 中的另一个页面中显示详细信息

    我正在尝试创建一个列表视图来显示硬编码数组列表中的数据及其工作良好 但我需要使用户能够单击任何项 目以在另一个页面中显示该项目的详细信息 我该怎么做 我尝试创建另一个数组来获取详细信息 并使 BindingContext 及其工作正常 但在
  • 通过 hbase shell 的行键?

    我在用 scan table name COLUMNS gt column family column qualifier LIMIT gt 2 列出 hbase 表中的 2 行 但我想知道是否可以使用 hbase shell 实现以下目标
  • Outlook 电子邮件转 pdf 安全提示

    我有一个任务 需要创建一个将 Outlook 电子邮件转换为 pdf 的程序 这是我的代码 Microsoft Office Interop Outlook Application app new Microsoft Office Inte
  • Google Oauth 弹出取消回调

    使用 Google 身份服务 GSI 时 我可以显示一个弹出窗口 要求用户连接他们的 Google 帐户 这是有很好的文档记录的 并且它与以下代码配合得很好 const client window google accounts oauth
  • SpriteKit:无法更改联系人回调中的节点位置

    我有一个具有动态物理体的节点 我想让它静止并在与另一个物体接触时改变它的位置 我设法使用此问题中提供的解决方案使主体静态 Sprite Kit 断言失败 typeA b2 dynamicBody typeB b2 dynamicBody h
  • 收集 Shiny R 中的所有输入标签

    受到这个答案的启发 收集整个 Shiny 应用程序中的所有用户输入 https stackoverflow com questions 41031584 collect all user inputs throughout the shin
  • SQLite 的 Android 持久性替代方案

    Android 中除了 SQLite 之外还有其他替代方案可以在手机中保存数据吗 我正在寻找类似 iOS coredata 的东西或更简单的东西 如键值存储 如果我们需要将其嵌入到应用程序中 尺寸相对较小的东西也很棒 谢谢您的帮助 如果您只
  • 搜索排序列表? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 什么是搜索或操作排序的 Pythonic 方法sequence https docs python or
  • 丢失 UDP 数据包的可能性有多大?

    好的 我正在为网络课程编程 并且必须使用 UDP 在 Java 中实现一个项目 我们正在实现一个 HTTP 服务器和客户端以及一个以指定概率损坏数据包的 gremlin 功能 HTTP 服务器必须在应用层将大文件分成多个段 以便通过 UDP
  • 实体框架/LINQ to SQL 数据绑定是否使用反射?

    如果之前有人问过这个问题 请原谅我 我进行了搜索 但找不到任何具体回答这个问题的内容 但我很乐意被推荐 我正在查看实体框架和 LINQ to SQL 虽然我喜欢这些系统 当然还有 LINQ 集成 但我对数据绑定方面有点怀疑 我获取了查询结果
  • 如何在Cocos2d-X中交换CCSprite对象中的精灵

    我有一个从 CCSprite 继承的对象 我想从这个对象内部改变图像 如何在 Cocos2d X 中更改图像 精灵 而不创建新的 CCSprite 对象 谢谢 阿德里安 mySprite gt setTexture CCTextureCac
  • ThreadPoolExecutor:任务正在排队但未提交

    我们有一个场景 提交给 ThreadPoolExecutor 的任务长时间运行 当线程池启动时 我们以核心池大小 5 最大池大小 20 和队列大小 10 来启动它 在我们的应用程序中 大约有 10 个任务被提交 大多数时候 这些任务运行几分