2009-09-28 57 views
1

有没有一种独立于平台的方法来检测Java中物理和/或虚拟处理器的数量?一个可能的解决方案是检测操作系统并使用Windows环境变量“NUMBER_OF_PROCESSORS”。 Linux和Mac OS X有类似的产品吗?但是,这可能不是最好的解决方案。检测Java中处理器数量的平台无关方式

回答

8

这可能有助于从

http://www.javadb.com/get-number-of-available-processors

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html

Runtime runtime = Runtime.getRuntime(); 
int nrOfProcessors = runtime.availableProcessors(); 
+0

是的,但请注意jarnbjo的答案 - 这不会让您知道机器中实际的核心数或处理器数量,而只是JVM可用的核心数或处理器数。文档说这个数字甚至可能在程序运行时发生改变! – Jesper 2009-09-29 09:14:01

2

注意Runtime#getAvailableProcessors()回报提供给Java虚拟机的处理器数量和处理器的数量不限可用于系统(如果那件事)。例如。使用操作系统工具将Java进程固定到特定处理器通常会对返回值产生直接影响,因此不要依赖此值在虚拟机的执行时间内不会更改。