如何使用Java代码获取处理器的每个核心的当前百分比利用率

时间:2013-11-28 09:25:45

标签: java

我有一种情况,我需要利用每个CPU的核心。例如。如果我有一个4核的处理器,那么预期的输出是:

               Core-1          Core-2      Core-3        Core-4
Utilization    31.04           12.89       2.45          10.56 

我尝试使用以下代码:

OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
System.out.println(operatingSystemMXBean.getSystemLoadAverage());

上面的代码段有两个问题。首先在Win7 32位上输出为-1.0,其次方法getSystemLoadAverage()的名称给出了它只显示整体cpu利用率的直觉。

请帮助我解决这个问题,如何利用处理器的每个核心。

由于

2 个答案:

答案 0 :(得分:1)

您必须编写多线程应用程序。编写单线程应用程序,在四核上并不比在单核上更快(理论上)。要利用CPU核心,必须为每个核心明确编写进程。

http://www.tutorialspoint.com/java/java_multithreading.htm

答案 1 :(得分:1)

您可以使用SIGAR。他们的网站说:

无论基础平台如何,都可以访问系统信息的一个API

我相信这就是你想要的。看看他们的网站:http://www.hyperic.com/products/sigar

JavaSysMon是另一个要查看的库:https://github.com/jezhumble/javasysmon/wiki