如何讓 java.exe 使用多個 cpu?

如何讓 java.exe 使用多個 cpu?

我在 Windows 7 (x64) 機器上運行 Hudson:這只是使用“java -jar hudson.war”啟動。由於某種原因,java 進程僅使用 2 個可用 cpu 中的一個,儘管它正在運行多個執行緒。我很確定作業系統的預設行為是將多執行緒程式的執行緒分佈在CPU上,除非明確告知(如果我沒記錯的話,使用一些SetProcessorAffinity api)。

有沒有辦法告訴java要使用多個CPU?

答案1

通常,java.exe會自動將執行緒放到不同的CPU上。

如果沒有,可能是因為程式是 I/O 密集型的,而不是 CPU 密集型的,或者是因為執行緒因為同步而無法同時運行。

http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#perf_scaling了解更多。

您可能需要調試 Hudson 才能知道為什麼它只使用一個處理器。

相關內容