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

How to know how many time is a java process awaiting

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

我想知道如何监视或分析消费者线程以了解它等待或阻塞了多少时间。

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

你们是怎么做这种监控的?

提前致谢!

任何体面的 Java Profiler 都可以按线程分离统计信息,即使是 JDK 中包含的相当基本的 JVisualVM。这是 JVisualVM 自我观察的截图:

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