我有一种情况,我需要利用每个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利用率的直觉。
请帮助我解决这个问题,如何利用处理器的每个核心。
由于
答案 0 :(得分:1)
您必须编写多线程应用程序。编写单线程应用程序,在四核上并不比在单核上更快(理论上)。要利用CPU核心,必须为每个核心明确编写进程。
答案 1 :(得分:1)
您可以使用SIGAR。他们的网站说:
无论基础平台如何,都可以访问系统信息的一个API
我相信这就是你想要的。看看他们的网站:http://www.hyperic.com/products/sigar
JavaSysMon是另一个要查看的库:https://github.com/jezhumble/javasysmon/wiki