/**
* Get the thread list with CPU consumption and the ThreadInfo for each thread
* sorted by the CPU time.
*/
private List<Map.Entry<Long, ThreadInfo>> getThreadList()
1
Java本身没有提供此功能 . 有几个开源API可用于衡量CPU使用率 . 我推荐Sigar API . 除CPU使用外,您还可以获得更多其他功能,如内存使用,系统正常运行时间等 .
6 回答
您应该查看Thread MBean中的ThreadMXBean.getCurrentCPUTime()方法 .
还有JTop示例应用程序是JDK
jdk\demo\management\JTop\src\JTop.java
或here的一部分 . 看一下:Java本身没有提供此功能 . 有几个开源API可用于衡量CPU使用率 .
我推荐Sigar API . 除CPU使用外,您还可以获得更多其他功能,如内存使用,系统正常运行时间等 .
在任何给定的时刻,线程正在运行(100%核心)或不运行(0%) . 中间没有 . 您需要的是线程运行状态的一系列短期快照,并对其进行平均 .
来自here
也许this或类似的图书馆可以帮助你 .
使用纯Java无法以编程方式查询CPU使用情况 . 根本就没有API . 建议的替代方法可能使用
Runtime.exec()
来确定JVM的进程ID(PID),调用外部的,特定于平台的命令(如ps),并解析其输出以获取感兴趣的PID .See this link