如何知道等待多少时间的java进程

时间:2015-10-21 18:18:57

标签: java multithreading monitoring

我正在开发一个有两个线程的Java应用程序:

  • 以10 KHz的频率提供ArrayBlockingQueue的生产者线程(它实际上是通过JNI的C代码)。
  • 使用take方法从队列中获取数据的消费者线程,然后对其进行处理(您不能假设处理时间始终相同)。由于我使用take方法,如果队列中没有可用数据,则可以阻止此线程。

我想知道如何监控或分析消费者线程,以了解它等待或阻止的时间。

我对System.currentTimeMillis()的时间和差异等问题的答案不感兴趣。我想知道如何分析整个线程的生命周期并总结每个线程状态中有多少时间,如果可能的话。

您如何进行此类监控?

提前致谢!

1 个答案:

答案 0 :(得分:1)

任何体面的Java Profiler都可以按线程分隔统计信息,即使是JDK中包含的其他相当基本的JVisualVM也是如此。这是JVisualVM观看自己的屏幕截图:

enter image description here

同样的信息也可以显示在表格中:

enter image description here