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

标签 java multithreading monitoring

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

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

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

我对诸如使用 System.currentTimeMillis() 计算时间和求差异等答案不感兴趣。我想知道如何分析整个线程生命周期并总结每个线程状态的时间(如果可能的话)。

如何进行这种监控?

提前致谢!

最佳答案

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

enter image description here

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

enter image description here

关于java - 如何知道java进程等待了多少时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33266482/

相关文章:

java - 如何在 JFXPanel 中执行模式文件选择器?

java - 需要使用泛型将列表过滤到特定的子类

java - 除非包含 println 或断点,否则代码无法工作

java - 我需要根据正则表达式模式对名称进行排序,我该怎么做?

wpf - 不反射(reflect)在 UI 上的任务更新数据绑定(bind) OC

java - 线程在它应该醒来的时候没有醒来

java - 了解多线程

monitoring - Sonar 墙显示?

java - 如何从 Android 应用程序检测 WiFi 网络中连接的所有设备

HTTP 请求跟踪