gpt4 book ai didi

java - 如果在多核处理器中运行,多线程应用程序将占用多少 CPU

转载 作者:行者123 更新时间:2023-12-04 00:32:27 27 4
gpt4 key购买 nike

多核处理器是具有两个或多个独立的实际中央处理单元(称为“内核”)的单个计算组件,这些单元是读取和执行程序指令的单元。

如果多线程应用程序在多核处理器上运行,将使用多少个 CPU?例如,如果机器能够执行双核,那么如果我的理解是正确的,那么将使用 2 个 CPU。在这两个 CPU 中,将执行多个线程并进行上下文切换。

最佳答案

If a Mulithreaded application runs on multi-core processor, how many CPU it will use, for example if the machine is capable of doing the dualcore, then 2 CPU will be used is my understanding is correct, and within these two CPU multiple thread will be executed and do the context switching.

JVM 实际上并不直接与处理器打交道。它使用操作系统的 native 线程功能,该功能使用操作系统和硬件公开的处理器。在 Java 中有一个 Runtime.availableProcessors() 方法,但这仅在 JVM 代码的几个地方出现。

对于 JVM 或在计算机上运行的任何其他应用程序,如果操作系统公开多核,多核通常看起来与多处理器相同。这意味着物理处理器与单个处理器中的多个内核之间的区别对 Java 程序员来说是完全隐藏的。

有单核 CPU,也有多核 CPU,它们共享某些内部组件,但操作系统看到它们并将它们调度为多个处理器。操作系统很可能将多核视为多个 CPU——没有区别。然后是通常称为 hyperthreading 的虚拟处理器它们共享相同的处理器核心(和相关的处理电路)但有多个执行管道。这些也(通常)被操作系统视为多个处理器。

具体来说,在 OP 的示例中,您有一个带有两个内核的处理器,在 linux cat'ing /proc/cpuinfo 中将显示 2 个处理器,而在 Java 中,Runtime.availableProcessors( ) 将返回 2。如果您有 2 个物理处理器,它也将返回 2;如果您有一个具有双超线程管道的单核,则很可能也会返回 2,具体取决于操作系统内核。

至于 JVM 实际将使用多少个处理器,这又取决于 native 线程代码。这就是说,如果 JVM 在具有两个内核的单个 CPU 上运行,并且这些内核没有被其他应用程序或操作系统使用,那么 JVM 的线程很可能会被安排在它们上同时运行。

关于java - 如果在多核处理器中运行,多线程应用程序将占用多少 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561332/

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