gpt4 book ai didi

java - 使用多少内核的决定权是否掌握在 JVM 手中?

转载 作者:行者123 更新时间:2023-12-03 21:05:40 25 4
gpt4 key购买 nike

假设我们有一个非常复杂的任务。我知道如果我们使用一个线程,那么实际上我们将使用一个内核,但是如果我将任务划分为与处理器内核数量相等的线程,程序是否一定会在所有内核上运行?
或者使用的线程数和内核数与 JVM 的“决定”之间没有相关性?

最佳答案

实际上,通常是操作系统决定 Java 应用程序使用多少个内核。 native 线程到内核的调度由操作系统处理1。 JVM 很少(如果有的话)说线程调度。
但是,是的,Java 应用程序不一定可以访问所有内核。这将取决于系统上的其他应用程序、服务等正在做什么。实际上,操作系统可以为管理员提供方法来从外部限制给定(Java 或非 Java)应用程序可以使用的内核数量,或者给予一个应用程序优先于另一个应用程序。

... or there is no correlation between the number of thread and used core's


有一种相关性,但不是特别有用。 JVM 不会(不能)使用比现有 native 线程(包括 JVM 的内部线程和 GC 线程)更多的内核。
还值得注意的是,操作系统(通常)不会将内核分配给当前不可运行的 native 线程。

Basil Bourque 注释在 his answer如果 Loom 项目被纳入标准版本,它将为 Java 中的线程带来重大改进。但是,Loom 不会改变在任何给定时间分配给应用程序 JVM 的物理内核数量由操作系统控制/限制的事实。

1 - 或操作系统的管理程序。例如,在云计算环境中事情可能会变得有点复杂。

关于java - 使用多少内核的决定权是否掌握在 JVM 手中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66942491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com