如何测量Java线程的执行时间?

9

我希望在Java中测量线程执行时间。目前我正在监控线程的启动和结束时间,但我认为这不是很准确,因为线程在执行期间可能会被暂停。

3个回答

20

Java MXBeans可以提供每个线程的CPU时间:

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;

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

请注意,此功能的可用性取决于平台。建议在使用“getThreadCpuTime”之前检查标志“isCurrentThreadCpuTimeSupported”。 - Steve Oh

7

这并不是一件简单的事情。你最好使用一个能够累积实际CPU周期的性能分析器。


3
+1 JDK 包含一个分析器 JVisualVM,这是你可以尝试的第一件事。 - Jesper

0
使用支持多种指标的性能分析解决方案。我们在产品中称它们为“计量器”,支持标准指标,如CPU时间、阻塞时间、等待时间,甚至基于关键绩效指标的自定义计量器。我想你肯定也想看到一个线程正在做什么,如果是这样,你肯定需要考虑一个产品而不是自己开发的临时解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接