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

时间:2010-12-23 23:53:34

标签: java runtime system

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

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

Java中是否有办法获取此信息?

5 个答案:

答案 0 :(得分:17)

您可以使用

Runtime.getRuntime().availableProcessors()

但它更像是一个最好的猜测,甚至是API提到的

  

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

答案 1 :(得分:6)

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

答案 2 :(得分:4)

Runtime.getRuntime().availableProcessors();

答案 3 :(得分:2)

如何(代码片段说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(); 
 }
}

答案 4 :(得分:1)

肯定是在Windows上。 JNA与kernel32.dll。使用SYSTEM_INFO电话中的GetNativeSystemInfo结构。其中包括dwNumberOfProcessors个。

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