当我的Java应用程序冻结时,我遇到了一个罕见的问题。现在我能够在NetBeans中以调试模式重现它。所以它目前保持冻结,但我不知道如何在代码中确切地找到死锁的位置,以及在哪些线程中。 callstack窗口为空,附加了线程截图。 我该怎么做才能在代码中找到问题?
答案 0 :(得分:2)
为了找到死锁,你必须进行几次连续的线程转储。当你比较它们时,你会看到踏板在哪里等待 - 这就是你死锁。
您可以使用jstack(应该是JDK安装的一部分)来进行线程转储,或者如果您使用Linux,则可以使用kill -3 PID
答案 1 :(得分:1)
在NetBeans中调用" Debug->检查死锁" (菜单栏)