Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Runtime.getRuntime().availableProcessors()确切返回什么?_Java_Cpu Cores - Fatal编程技术网

Java Runtime.getRuntime().availableProcessors()确切返回什么?

Java Runtime.getRuntime().availableProcessors()确切返回什么?,java,cpu-cores,Java,Cpu Cores,我的处理器是Intel®Core™ i7-3610QM处理器(6M高速缓存,2.30GHz),拥有4个处理器内核和8个线程(这到底意味着什么?)。我正在运行一个简单的Java程序来找出“Java虚拟机可用的处理器”(Oracle的API,Java 7)的数量,它为我返回8,而不是4。有人能解释一下为什么会这样吗 以下是简单的java代码: public class MyTest { public static void main(String args[]) { Syst

我的处理器是Intel®Core™ i7-3610QM处理器(6M高速缓存,2.30GHz),拥有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());
    }
}

这更像是一个硬件问题

你的处理器有四个物理内核,加上一个叫做“超线程”的东西,这本质上意味着“告诉系统你真的有八个内核,即使你有四个。”根据英特尔的说法,这比仅仅表示为四个内核的性能提高了10-20%

你所看到的是操作系统所看到的:八核。实际上,它有四个内核,加上超线程

您可能希望看到,其中说明:

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


Hyerthreading不仅仅是伪造内核的数量。在体系结构的前端有一些实际的逻辑,允许更快的上下文切换。@MarkoTopolnik这是一个很好的观点。不过,我认为实际细节与此无关。