如何使用 NetBeans 查找死锁?

How to find Deadlock using NetBeans?

当我的 Java 应用程序冻结时,我遇到了一个罕见的问题。现在我能够在 NetBeans 中以调试模式重现它。所以它目前保持冻结状态,但我不知道如何在代码中找到死锁的确切位置,以及在哪些线程中。调用堆栈 window 为空,附上线程截图。 我应该怎么做才能找到代码中的问题?

为了找到死锁,您必须进行几次连续的线程转储。当你比较它们时,你会看到踏板在哪里等待 - 这是你的死锁。

您可以使用 jstack(它应该是您 JDK 安装的一部分)进行线程转储,或者如果您使用 Linux,您可以使用 kill -3 PID

在 NetBeans 中调用 "Debug->Check for Deadlock"(菜单栏)