Java Runtime.getRuntime().availableProcessors()确切返回什么?
我的处理器是Intel®Core™ i7-3610QM处理器(6M高速缓存,2.30GHz),拥有4个处理器内核和8个线程(这到底意味着什么?)。我正在运行一个简单的Java程序来找出“Java虚拟机可用的处理器”(Oracle的API,Java 7)的数量,它为我返回8,而不是4。有人能解释一下为什么会这样吗 以下是简单的java代码: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
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这是一个很好的观点。不过,我认为实际细节与此无关。