在IntelliJ中显示对象监视器

yan*_*kee 6 debugging concurrency intellij-idea

我需要修复我的应用程序中的一个错误,这显然会导致死锁.但是我不确定死锁实际发生在哪里.如果我能够获得所有线程的列表,包括使用IntelliJ的调试器暂停应用程序时它们拥有哪些监视器,那将非常有用.例如,类似于下面的文章解释了如何使用eclipse:

http://www.eclipsezone.com/eclipse/forums/t44632.html

yan*_*kee 7

以调试模式运行应用程序.等到发生死锁并暂停应用程序.转到"线程" - 右键单击​​任意线程:

带有线程视图上下文菜单的屏幕截图

单击"导出线程...".等待获取的线程显示如下:

Thinlet-Timer@2125 daemon, prio=1, in group 'main', status: 'MONITOR'
     waiting for AWT-EventQueue-0@1397 to release lock on <0x84c> (a my.Example)
[..]
Run Code Online (Sandbox Code Playgroud)

拥有监视器,阻止其他线程执行的线程显示如下:

AWT-EventQueue-0@1397, prio=6, in group 'main', status: 'RUNNING'
     blocks Thinlet-Timer@2125
[..]
Run Code Online (Sandbox Code Playgroud)