监视\ profiling \ measurement的Java线程

时间:2011-06-23 10:05:23

标签: java multithreading jvm jvisualvm

我熟悉

  

http://download.oracle.com/javase/6/docs/api/java/lang/management/ThreadMXBean.html

我想测试\ profile \测量线程获得多少CPU时间。 我将以下内容添加到我的线程构造函数中:

ManagementFactory.getThreadMXBean().setThreadCpuTimeEnabled(true);
if(!ManagementFactory.getThreadMXBean().isCurrentThreadCpuTimeSupported())
    System.err.println("measure is not supported.");
ManagementFactory.getThreadMXBean().setThreadContentionMonitoringEnabled(true);
if(!ManagementFactory.getThreadMXBean().isCurrentThreadCpuTimeSupported())
    System.err.println("contention is not supported.");

然后当线程完成它的执行时,我执行了:

long tID = Thread.currentThread().getId();
long execTime = ManagementFactory.getThreadMXBean().getThreadCpuTime(tID);

但对于我的大多数线程,我确实绝对确定它们占用了CPU,我的执行时间为零(execTime == 0)。

我如何衡量我的线程?上述程序可能出现什么问题?

先谢谢。

1 个答案:

答案 0 :(得分:0)

看看Thread Top,一切都完成了,不需要重新发明轮子。