This question already has answers here:
Runtime.availableProcessors: what is it going to return?

(3个答案)



Runtime.getRuntime().availableProcessors()

(5个答案)


6年前关闭。





我的处理器是Intel®Core™i7-3610QM处理器(6M缓存,2.30 GHz),它具有4个处理器核心和8个线程数(这到底是什么意思?)。我正在运行一个简单的Java程序,以查找“可用于Java虚拟机的处理器”的数量。 (Oracle的API,Java 7),它为我返回8,而不是4。有人可以解释一下为什么吗?

这是简单的Java代码:

public class MyTest {
    public static void main(String args[]) {
        System.out.println("Number of cores available : " + Runtime.getRuntime().availableProcessors());
    }
}

最佳答案

这更多是IMO的硬件问题。

您的处理器是四个物理核心,外加一个叫做“超线程”的东西,这实际上意味着“告诉系统您确实有八个核心,即使您有四个核心”。据英特尔称,与仅将其表示为四个内核相比,这可将性能提高10-20%。

您所看到的就是操作系统所看到的:八个核心。从物理上讲,它是四个核心以及超线程。

您可能需要查看this answer on a similar question,其中指出:


处理器的数量基本上是执行引擎的数量
能够运行您的代码。 i5变体之一是4核CPU,
i5-7系列。这些可能是物理上不同的处理器(甚至
尽管它们存在于同一芯片中),或者它们可能合乎逻辑
使用超线程时的处理器。

10-02 12:28
查看更多