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

如何使用Java代码获取处理器每个核心的当前利用率百分比,java,Java,我有一种情况,我需要得到CPU的每个核心的利用率。例如,如果我有一个4核处理器,则预期输出为: Core-1 Core-2 Core-3 Core-4 Utilization 31.04 12.89 2.45 10.56 我尝试使用以下代码: OperatingSystemMXBean operatingSystemMXBean = ManagementFactor

我有一种情况,我需要得到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());
上面的代码段有两个问题。首先,在Win32-bit上,输出为-1.0,其次,方法的名称
getSystemLoadAverage()
给出了一个直觉,它只显示总体cpu利用率

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


谢谢

您必须以多线程方式编写应用程序。在四核上编写单线程应用程序并不比在单核上更快(理论上)。为了充分利用CPU内核,您必须为每个内核显式地编程一个进程


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

一个API,用于访问系统信息,而不考虑底层平台

我相信这就是你想要的。看看他们的网站:


JavaSysMon是另一个要查看的库:

Windows7和Java是一个系统,现在可以一次在多个处理器上工作,处理器本身将分割工作。无论如何,您尝试的东西不能用java完成,因为它运行在一个没有这种能力的虚拟机上。你想做的事情可以在windows的任务管理器中实现,设置应用程序与内核的亲缘关系,或者在linux上使用
nice
工具。谢谢你的回复。我不需要在所有内核上运行我的应用程序。相反,我只需要检索处理器每个核心的利用率。就像在任务管理器中一样,我们有四个图形用于处理器的4个核心。所以我只需要在代码中检索这些图的数值。