【问题标题】:How to measure Java thread execution time?如何测量Java线程执行时间?
【发布时间】:2011-02-16 08:51:29
【问题描述】:

我想测量 Java 中的线程执行时间。现在我正在监视线程的开始和结束时间,但我认为它不是那么准确,因为线程可能在执行期间被挂起。

【问题讨论】:

    标签: java performance multithreading monitoring


    【解决方案1】:

    这是不平凡的。最好的办法是使用可以累积实际使用的 CPU 周期的分析器。

    【讨论】:

    • +1 JDK 包含一个分析器 JVisualVM,这是您可以尝试的第一件事。
    【解决方案2】:

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

    import java.lang.management.ManagementFactory;
    import java.lang.management.ThreadMXBean;
    
    long nanos = ManagementFactory.getThreadMXBean().getThreadCpuTime(Thread.currentThread().getId());
    

    【讨论】:

    • 请注意,此功能的可用性取决于平台。建议在使用getThreadCpuTime之前检查标志isCurrentThreadCpuTimeSupported
    【解决方案3】:

    使用支持多个指标的分析解决方案。我们在我们的产品中将它们称为(指标)计量器,支持标准计量器,例如 CPU 时间、阻塞时间、等待时间,甚至是基于关键性能指标的自定义计量器。我假设您还想看看线程到底在做什么,在这种情况下,您肯定需要考虑一个产品,而不是一个自制的临时解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 2016-06-11
      • 2017-05-31
      • 2021-08-08
      • 2012-05-14
      相关资源
      最近更新 更多