Java-线程与CPU的关系

2024-06-19

我对多线程还很陌生,我正在开发一个项目,尝试在我的 Java 程序中使用 4 个 CPU。我想做类似的事情

int numProcessors = Runtime.getRuntime().availableProcessors();
ExecutorService e = Executors.newFixedThreadPool(numProcessors);

这能保证每个 CPU 都有一个线程在工作吗?在我创建线程时,系统不会很忙,但一段时间后它会非常繁忙。我认为操作系统会选择最不繁忙的 CPU 来创建线程,但是如果它们在创建时都不是特别繁忙,那么它如何工作呢?

另外,线程池服务应该重用线程,但是如果它看到另一个 CPU 上有更多的可用性,它会杀死该线程并在那里生成一个新线程吗?


这能保证每个 CPU 都有一个线程在工作吗?

如果您有四个需要同时执行的任务,则可以预期它们每个都有一个线程。在 HotSpot JVM 中,它会创建 Thread 对象,该对象是创建池时实际线程的代理。实际线程何时创建以及如何创建对您来说很重要。

在我创建线程时,系统不会很忙,但一段时间后它会非常繁忙。我认为操作系统会选择最不繁忙的 CPU 来创建线程,但是如果它们在创建时都不是特别繁忙,那么它如何工作呢?

线程由操作系统创建,并将其添加到要调度的线程列表中。

另外,线程池服务应该重用线程,但是如果它看到另一个 CPU 上有更多的可用性,它会杀死该线程并在那里生成一个新线程吗?

Java 在这件事上没有发言权。操作系统决定。它不会杀死并重新启动线程。

线程并不像您建议的那样与 CPU 绑定。操作系统根据需要运行的线程以及空闲的 CPU 在 CPU 之间传递线程。

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

Java-线程与CPU的关系 的相关文章

  • 获取 get 或 post 请求的响应的响应字符集

    我正在努力在 java web 应用程序中提取响应字符集 我在其中使用 Apache HTTP 客户端 例如 从 Content Type 标头获得的一个可能值是 text html charset UTF 8 然后我的代码将提取 符号之后
  • 在 Java 代码中存储加密密钥? [复制]

    这个问题在这里已经有答案了 我正在使用 JASYPT 在我们基于 Java 的软件中对密码进行加密解密 这就是我们加密密码的方法 StrongTextEncryptor textEncryptor new StrongTextEncrypt
  • 项目展开时自动调整列大小

    在具有多列的树中 如何在展开 折叠和数据更新时调整列的大小以适应内容 类似的解决方案表格问题 https stackoverflow com questions 3186340 swt table auto resize all colum
  • 交错立体声 PCM 线性 Int16 大端音频是什么样的?

    我知道网上有很多资源解释如何解交错 PCM 数据 在我当前的项目过程中 我已经研究了其中的大多数 但我没有音频处理的背景 而且我很难找到关于如何处理的详细解释exactly存储这种常见的音频形式 我确实知道我的音频将有两个通道 因此样本将以
  • 以编程方式滚动 NatTable

    关于 stackoverflow 的第一个问题 类似的问题here https stackoverflow com questions 3531081 scrolling swt table programmatically 只有我想滚动N
  • PHP 和 ESB(使用 Mule)(ESB:企业服务总线)

    您在 PHP 项目中何时 何地以及为何使用 ESB 您认为在何处 何时以及为何在 PHP 项目中使用 ESB 有意义 ESB 以及像 Mule 这样的 ESB 促进者 是否提供了 PHP 和本地 LAMP 技术所缺乏的任何功能 Edit 我
  • 如何使用 DirectoryStream.Filter 过滤隐藏文件

    我正在尝试使用 NIO 类过滤隐藏文件 当我在 Windows 10 上运行随附的代码时 我得到以下输出 Files c Documents and Settings c PerfLogs c Program Files c Program
  • Unwrap 当使用 Collectors maxBy 和 groupingBy 时可选

    我有一堂课 有一个String and an int field public class Data private String name private int value private Data String name int va
  • Jackson - 将值传递给 JsonDeserializer

    我有一个现有的类层次结构 如下所示 public interface Service String getId String getName public class FooTask extends AbstractTask private
  • 如何使用我的 Apple 开发者 ID 签署 .jar 文件

    我有一个java可执行文件jar我需要使用我的 Apple 开发者 ID 进行签名的文件 我不打算通过应用程序商店分发它 我将通过我的网站直接向客户分发该应用程序 我不打算绕过 Gatekeeper Signing the app和我的de
  • 使用 Java Google App Engine 批量加载程序将整个数据存储区下载到一个 csv 文件

    我目前正在使用 kind参数来指定下载的类型和 filename指定要生成的 csv 文件的名称 这 rps limit bandwidth limit and batch size用于加速下载 例如 要下载我正在使用的游戏类型 appcf
  • 从命令行进行 Liquibase 回滚不起作用

    我正在 Windows 环境中执行一个 Tomcat 应用程序 部署时会在 Oracle 数据库上创建 更新数据库架构 为此 我使用 Liquibase SDK 3 3 2 所以基本上我调用 SDK 并告诉它从我的changelog xml
  • Spring:如何将 KeyHolder 与 PostgreSQL 一起使用

    最近迁移到 POSTGRESQL 我试图获取在数据库表中创建新条目时唯一生成的密钥 桌子screenstable看起来像这样 CREATE TABLE screenstable id serial NOT NULL screenshot b
  • Android Edittext Onclick Datepickerdialog 棒棒糖中出现错误

    我正在使用日期选择器对话框 它在 kitkat 上运行正常 但是当我在棒棒糖上运行应用程序时 当我单击编辑文本时 它会打开一个日期选择器对话框 但当我选择日期时 它会不幸地给出停止错误 以下是 edittext 上日期选择器的代码 priv
  • LoggerFactory.getLogger(ClassName.class) 与 LoggerFactory.getLogger(this.getClass().getName())

    我正在努力提高我的 Java 优化技能 为了实现这一目标 我制作了一个旧程序 并且正在尽力使其变得更好 在此程序中 我使用 SL4J 进行日志记录 为了获取记录器 我做了 private static final Logger logger
  • 从 blob 反序列化 java 对象

    首先 我很抱歉 我要问一些愚蠢的问题 我根本不懂java 也不知道我们是否可以问这样的问题 如果没有 删除我的主题 oracle中有一个存储blob的表 它是二进制的 我能够解码它 输出看起来像这样 sr com epam insure c
  • Flask 从线程中删除会话变量

    我尝试实施投票系统 它的工作原理是这样的 如果用户对帖子进行投票 我会在会话变量中记录其临时状态 已投票 已加星标等 如果当前用户在我将结果保存到临时表之前尚未投票 用户可以在 5 分钟内更改投票 5 分钟后 结果将使用线程永久写入数据库
  • 使用java连接到VPN后面的http服务器

    我想通过 VPN 连接到 REST Web 服务 Java 有没有办法在不使用操作系统功能的情况下建立到 VPN 网关的 pptp l2tp ipsec 连接和 HTTP 请求隧道 这很重要 因为我将从 servlet 连接到多个休息服务
  • JSON 解析为 Java - Android 应用程序

    我需要在 Java Android 应用程序中解析 json 字符串的帮助 JSON 文件的文本 data columns location id name description latitude longitude error type
  • Hibernate 对于 Android 应用程序来说是一种杀伤力吗? [复制]

    这个问题在这里已经有答案了 我正在为我的 Android 应用程序寻找一个好的 ORM 乍一看似乎对于移动设备我更喜欢使用更简单的东西 问题是我只是在这里假设 没有真正的证据 所以我想我应该询问社区的意见 也许有人有过这样的经历 它是一个相

随机推荐

  • Bundle exec rspec VS rspec 规范

    红宝石 1 9 2 导轨 3 1 这是问题所在bundle exec rspec spec 不起作用 但是rspec spec 运行正常 当我跑步时c RailsInstaller work apptwit gt bundle exec r
  • 在 main 之前执行任何函数[重复]

    这个问题在这里已经有答案了 我想在 main 之前执行用户定义函数 是否可以先执行一个函数main in c sum int a int b return a b g sum sum 1 5 main sum 5 6 printf d g
  • 将变量设置为函数调用以在 PHP 中的 if 语句中使用

    好的 我正在做一些 Wordpress 编辑 并且编写了一个 if 语句 正如您所看到的 这使用函数调用作为变量 这是因为函数调用会调用当前页面的名称 这很好 然而 当我这样做时 它也往往会与页面上的标题相呼应 这是有道理的 我可能正在尝试
  • 如何使用“index_mut”来获取可变引用?

    即使当我实施IndexMut对于我的结构 我无法获得对结构内部向量元素的可变引用 use std ops Index IndexMut struct Test
  • 模板策略模式

    我想分解一个类 使其与执行某些任务的逻辑分离 以便用户可以按照自己的意愿编写新策略 而不会干扰中心模型 因此 我想使用模板化策略类 但不必让策略的用户被模板化 class Model boost shared ptr lt Strategy
  • 如何覆盖flask-security的登录?

    我想在用户登录时进行一些自定义 问题是该项目正在使用flask security 它隐式处理用户登录 我想在用户登录时检查数据库中用户的一些记录 如何覆盖烧瓶安全中的 登录 功能 I saw a 类似的帖子 https stackoverf
  • 从子域重定向到域+ .htaccess

    我可以为多个域配置 RewriteRule 吗 就像我的要求是 我当前的域名 www maindomain com 假设我有三个域和子域 子域网址是 example1 maindomain com example2 maindomain c
  • 如何在 Moderngl EGL 后端添加深度缓冲区?

    此代码渲染一个带有抗锯齿功能的彩色三角形 samples 8 当深度缓冲线depth attachment ctx depth texture 512 512 samples 8 被评论 但是当我添加深度缓冲区时 它会在绑定处返回 GL 错
  • 使用图表时避免使用“激活”和“选择”(Excel)

    我知道使用Activate and Select在 Excel 中 VBA 不是最佳实践 我看过有关如何在处理范围时避免它们的参考资料 例如 LINK https stackoverflow com questions 10714251 e
  • 使用 Scala 进行网页抓取 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JavaScript 跨浏览器单击 HTML DOM 元素

    是否有可用的普通 JavaScript 跨浏览器函数能够触发 HTML DOM 元素 包括 div 等非表单元素 上的单击事件 大多数走这条路的人要么最终开发自己的事件管理系统 这并不难 但很烦人 要么在可用的功能范围内工作 如果所有浏览器
  • 如何创建在特定范围内开始和结束的条形图

    我创建了一个计算机模型 只是为了好玩 来预测足球比赛结果 我进行了计算机模拟来预测一支球队将获得多少分 我得到了每个团队的模拟结果列表 我想绘制诸如置信区间之类的东西 但使用条形图 我考虑了以下选择 我考虑过使用 matplotlib 的烛
  • 如何删除 Apache Kafka 中的多个主题

    假设我有许多具有相同前缀的主题 例如 giorgos topic1 giorgos topic2 giorgos topic3 用于删除单个主题的命令 例如giorgos topic1 如下 bin kafka topics sh zook
  • Postgresql 一张表的多个计数

    我想从表中的两列中获得这些列中值的统一计数 例如 两列是 表 报告 type place one home two school three work four cafe five friends six mall one work one
  • 何时/为何使用/定义接口[重复]

    这个问题在这里已经有答案了 可能的重复 何时最好使用 java 中的接口 https stackoverflow com questions 2586389 when best to use an interface in java Hi
  • 视图绑定对应用程序大小的影响有多大?

    View Binding 按照文档的规定 为每个XML元素生成一个Binding类 以方便访问和检查 并减轻如下的时间负担 findViewById 虽然findViewById通过更昂贵的关联搜索进行操作 由于映射 绑定应该 直接 访问
  • 如何设置引导开关的 css 颜色?

    如何在此引导开关中将蓝色更改为另一种颜色 我尝试更改输入元素的颜色和背景颜色 但它没有更改开关颜色 这是 html 和 bootstraplink https getbootstrap com docs 4 2 components for
  • 计算从给定日期开始的月份中的第几天?

    我正在努力寻找一种简单有效的解决方案来计算每月的工作日 例如 如果给定日期是第一个星期一Monday 5th March 2018然后我想获取接下来 6 个月每个月第一个星期一的日期 例如 Monday 2nd April 2018 and
  • 如何从 SOAP 响应中删除额外的结果标签

    我知道这个问题以前曾被问过 但我在任何地方都找不到答案 问题是我的 asmx 文件中有以下代码 namespace IrancellSmsServer SoapDocumentService RoutingStyle SoapService
  • Java-线程与CPU的关系

    我对多线程还很陌生 我正在开发一个项目 尝试在我的 Java 程序中使用 4 个 CPU 我想做类似的事情 int numProcessors Runtime getRuntime availableProcessors ExecutorS