7

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

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

4

1 回答 1

8

在调试模式下运行您的应用程序。等到死锁发生并暂停应用程序。转到“线程”-选项卡右键单击任意线程:

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

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

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)
[..]

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

AWT-EventQueue-0@1397, prio=6, in group 'main', status: 'RUNNING'
     blocks Thinlet-Timer@2125
[..]
于 2013-09-24T10:43:17.610 回答