我想对多线程程序进行一些调整。
如果我知道线程可以并行工作多少,我可以使程序更有效。
Java中是否有办法获取此信息?
答案 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
个。
我相信这会提供实际安装的处理器数量,而不是可用数量。