簡體   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