作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 netbeans 和它的分析器来查看线程 Activity 。图表显示,当有多个工作线程在执行时,线程可以保持多种状态:运行、等待、监视。
我编写了我的 Java 应用程序,以便它的工作线程应该只使用只读变量而不需要同步。
但是,在执行 netbeans profiler 时,我可以看到我的线程经常处于监控状态。我想他们正在等待显示器解锁,但我可以想象哪个显示器。
所以,我的问题是:有没有办法了解线程正在等待什么监视器?
谢谢
最佳答案
首先尝试在等待监视器发生时进行线程转储。有多种方法可以做到这一点,包括 jstack
、jvisualvm和 kill -3
。 Netbeans 也可能能够为其执行的应用程序执行此操作。
将线程转储文件导入 tda .虽然您仅通过在纯文本编辑器中阅读文件就会发现很多,但这个简单的应用程序可以对线程和监视器进行分组,允许您浏览线程,包括超链接等。看起来很晦涩,但效果很好。
如果您在阅读堆栈跟踪时遇到困难(这对 Java 开发人员来说是一项非常重要的技能),请在此处发布一个等待线程。
关于java - 如何查看线程正在等待哪个监视器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5338357/
我是一名优秀的程序员,十分优秀!