繁体   English   中英

Java中有没有办法找出安装了多少CPU(或核心)?

[英]Is there a way in Java to find out how many CPUs (or cores) are installed?

我想对多线程程序进行一些调整。

如果我知道多少线程可以并行工作,我可以使程序更有效。

有没有办法在Java中获取此信息?

您可以使用

Runtime.getRuntime().availableProcessors()

但它更多的是最好的猜测,甚至是API提到的

在特定的虚拟机调用期间,此值可能会更改。 因此,对可用处理器数量敏感的应用程序应偶尔轮询此属性并适当调整其资源使用情况。

关于availableProcessors()方法的一个注意事项,它不区分物理cpu和虚拟cpu。 例如,如果您的计算机上启用了超线程,则该数字将是物理cpu的数量的两倍(这有点令人沮丧)。 不幸的是,没有办法在纯java中确定真实与虚拟cpu。

Runtime.getRuntime().availableProcessors();

怎么样(代码片段说1000字):

 public class Main {

 /**
  * Displays the number of processors available in the Java Virtual Machine
  */
 public void displayAvailableProcessors() {

    Runtime runtime = Runtime.getRuntime();

    int nrOfProcessors = runtime.availableProcessors();

    System.out.println("Number of processors available to the Java Virtual Machine: " + nrOfProcessors);

 }

 public static void main(String[] args) {
    new Main().displayAvailableProcessors(); 
 }
}

是的,确实在Windows上。 JNA与kernel32.dll。 使用GetNativeSystemInfo调用的SYSTEM_INFO结构。 还有dwNumberOfProcessors等。

我相信这将提供实际安装的处理器数量,而不是可用数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM