【发布时间】:2011-02-16 08:51:29
【问题描述】:
我想测量 Java 中的线程执行时间。现在我正在监视线程的开始和结束时间,但我认为它不是那么准确,因为线程可能在执行期间被挂起。
【问题讨论】:
标签: java performance multithreading monitoring
我想测量 Java 中的线程执行时间。现在我正在监视线程的开始和结束时间,但我认为它不是那么准确,因为线程可能在执行期间被挂起。
【问题讨论】:
标签: java performance multithreading monitoring
这是不平凡的。最好的办法是使用可以累积实际使用的 CPU 周期的分析器。
【讨论】:
Java MXBeans 可以提供每个线程的 CPU 时间:
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
long nanos = ManagementFactory.getThreadMXBean().getThreadCpuTime(Thread.currentThread().getId());
【讨论】:
getThreadCpuTime之前检查标志isCurrentThreadCpuTimeSupported。
使用支持多个指标的分析解决方案。我们在我们的产品中将它们称为(指标)计量器,支持标准计量器,例如 CPU 时间、阻塞时间、等待时间,甚至是基于关键性能指标的自定义计量器。我假设您还想看看线程到底在做什么,在这种情况下,您肯定需要考虑一个产品,而不是一个自制的临时解决方案。
【讨论】: