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

Rom*_*man 11 java runtime system

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

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

有没有办法在Java中获取此信息?

Joh*_*int 17

您可以使用

Runtime.getRuntime().availableProcessors()
Run Code Online (Sandbox Code Playgroud)

但它更多的是最好的猜测,甚至是API提到的

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


jta*_*orn 6

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