什么时候在 ThreadPoolExecutor 中指定单独的核心和最大池大小是个好主意?

2023-12-23

我试图理解为 Java 5 的 ThreadPoolExecutor 指定单独的核心和最大池大小的要点。我的理解是,线程数只有在队列已满时才会增加,这似乎有点晚了(至少对于较大的队列)。

难道我不乐意为任务分配更多数量的线程,在这种情况下我可能只是增加核心池大小;或者我不太愿意这样做,在这种情况下我应该有更大的队列?单独的核心和最大池大小在什么情况下有用?


有一个关于这个的讨论here http://comments.gmane.org/gmane.comp.java.jsr.166-concurrency/7109.

该池旨在在 corePoolSize 的正常负载下工作(以 除非使用预启动,否则它会逐渐增加)。当过载时 发生条件(定义为有更多待处理/处理中的 任务而不是工人)我们使用队列作为缓冲区 - 与 预计近期将恢复正常工作量 未来。如果我们担心过度过载,那么我们可以使用 有界队列,这表示“如果队列已满,则添加更多工作人员 最多 maxPoolSize”。如果我们使用无界队列,我们​​会说我们不这样做 预期(或者不关心)过度过载。

目的是平衡处理预期工作负载的能力, 即使在瞬时过载的情况下,也无需过多的线程 创建并且没有太多线程搅动(即 创建-工作-模具-创建)。

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

什么时候在 ThreadPoolExecutor 中指定单独的核心和最大池大小是个好主意? 的相关文章

随机推荐

  • 如何更改 libavformat 中的流索引

    我是 ffmpeg 的新手 当某些媒体具有多个音频流时 我遇到问题 假设在MKV文件中 它有三个音频流 MP3 WMA和WMAPro 使用以下命令进行解复用时如何更改流索引 AVPacket inputPacket ret av read
  • Equals 方法的默认行为是什么?

    设 A 是一个类 其中一些成员为 x y z Class A int x int y String z A 是一个对象 因此它继承了 Object 中定义的 Equals 函数 该函数的默认行为是什么 它检查成员的相等性还是检查引用的相等性
  • PHP 无符号右移 - 故障

    因此 当使用我的方法在 PHP 中执行 gt gt gt 无符号右移时 当数字涉及负数时 结果不正确 PHP 申请结果 INPUT 10 gt gt gt 3 INPUT 10 gt gt gt 3 OUTPUT 1 OUTPUT 2684
  • 如何更改 GCM 推送通知的样式

    我想将我的应用程序接收的 GCM 推送通知的样式从标准单行通知更改为多行通知 Java世界的解决方案似乎是将通知的样式设置为BigTextStyle当它被创建时 我找到了一个涉及黑客攻击的本地通知解决方案Androidapi JNI Sup
  • H1 标题的背景图片

    在我的 WordPress 主题页面标题中 My Css page h1 pagetitle width auto text align left font size 30px padding 25px 40px 25px 0px text
  • 在 pyes 和 elasticsearch 中按多个参数排序

    我可以通过一个sortpyes 中搜索查询的参数如下 s MatchAllQuery conn search query Search s indexes test sort score 但我需要传递一个额外的参数来对具有相同分数的文档进行
  • 在 Postman 中使用不同的数据多次运行请求仅运行一次

    我是 Postman 的新手 经常遇到一个我无法解决的问题 我尝试使用在预请求脚本上建立的数据数组多次运行相同的请求 但是 当我转到运行程序时 请求仅运行一次 而不是 3 次 预请求脚本 var uuids pm environment g
  • Scipy.optimize 不等式约束 - 考虑不等式的哪一边?

    我正在使用 scipy optimize 模块来查找最佳输入权重 以最小化我的输出 从我见过的例子来看 我们用单边方程定义约束 然后我们创建一个 不等式 类型的变量 我的问题是优化包如何知道约束中变量的总和是否需要小于 1 还是大于 1 d
  • 退出时关闭 Visual Studio 中的所有文件

    有没有办法在退出时关闭 Visual Studio 中的所有文件 或者 如果不可能 是否可以删除 Visual Studio 在退出时创建的用户项目文件 Windows gt 关闭所有文档文件 gt 退出 或者在项目关闭后手动删除 sou文
  • 如何从 COBOL 中的 COMP-3 字段读取 Java 中的日期?

    我正在尝试使用读取 COBOL 数据文件JRecord http sourceforge net projects jrecord source typ redirect 因为我有一个标题记录和详细记录 所以我用 SPLIT 01 LEVE
  • 当拉取请求更改时取消操作运行

    对于我的项目 我有一个相当长的 github 操作 当创建新的拉取请求时会触发该操作 这些是我使用的触发器 on pull request types opened ready for review labeled 此操作被定义为我的拉取请
  • 为什么 HttpApplication 构造函数被多次调用

    有人可以解释为什么自定义类的构造函数派生自Http应用程序应用程序启动时被调用多次 我的代码结构如下 My Globalglobal asax 中的类派生自定制应用程序 class The 定制应用程序类源自Http应用程序 class T
  • 如何从 CXF/JAX-RS 中的 JSON 响应中删除命名空间前缀?

    我有 CXF 使用 JAX RS 创建的以下响应 ns1 CustomerInformationResponse xsi type ns1 CustomerInformationResponse ns2 code SUCCESS ns1 c
  • 如何更改函数引用的类型?

    Java8 允许我使用方法声明作为任何接口的实现 只要它只包含一个方法 然而 一旦定义 类型就不能更改 My code import java util function IntConsumer public class A interfa
  • boost::asio::yield_context:意外的forced_unwind异常

    我正在尝试为 boost asio 编写自定义异步函数 如下所述here https stackoverflow com questions 24497881 boostasiospawn yield as callback 但是我得到了
  • 如何在 Android 10 中从服务启动 Activity

    我从服务开始活动直到 android P 但是从 android10 谷歌保留了一项限制 即活动不能从后台启动 https developer android com guide components activities backgrou
  • 使用连接字符串时如何设置 knex 连接 ssl 选项

    当我使用连接字符串初始化 knex 时 如何将连接的 ssl 属性设置为 true 同样如何将debug设置为true 我通常会传入一个连接对象 但在这种情况下 我必须使用环境变量中的连接字符串 var database client pg
  • 检测页面上是否显示警报或确认

    有没有办法使用 JavaScript 或 jQuery 来检测是否显示确认框或警报框 如果您想在以下情况下运行一些代码alert 火灾 你可以尝试这样的事情 我只在 Chrome 中进行了测试 所以我不确定浏览器是否支持 Example h
  • C++ 不会安装在 Netbeans 11.0 中

    我是编程初学者 想了解更多关于 C 的知识 我安装了 Netbeans 因为它说它支持 Java 我目前正在学校学习基础知识 和 C 我想出于个人兴趣学习 但是当我尝试创建一个新项目时 我找不到C 所以我按照教程并最终尝试安装该插件 问题是
  • 什么时候在 ThreadPoolExecutor 中指定单独的核心和最大池大小是个好主意?

    我试图理解为 Java 5 的 ThreadPoolExecutor 指定单独的核心和最大池大小的要点 我的理解是 线程数只有在队列已满时才会增加 这似乎有点晚了 至少对于较大的队列 难道我不乐意为任务分配更多数量的线程 在这种情况下我可能