java - 如何检测另一个java线程是否被挂起或卡住?

标签 java multithreading 3d mouse

我搜索并找到了通过向其添加 boolean 值来确定另一个线程是否被挂起的方法。但是,我不想(不想)修改其他线程的代码。而且,我需要检测它是否因任何原因被卡住(甚至是错误,因此在这种情况下其他线程也可能没有响应)。

我看到 Eclipse 是如何做到这一点并显示应用程序的线程没有响应,我想知道他们是如何编码的。

动机:我需要这个来从 3D lwjgl 应用程序中释放鼠标(松开它),并且这必须独立于任何 IDE,应用程序本身必须执行此操作。我正在尝试监视主应用程序线程。

最佳答案

虽然不一定是最好的主意,但您可以使用 Thread#getState()查看线程的当前状态。

但是,这取决于线程的上下文。如果由于无法跳出循环而被卡住,则此方法无法工作。此外,如果它只是等待锁或有界集合,那么这将是一个错误调用。

线程应处于以下 3 种状态:BLOCKED , WAITING ,或TIMED_WAITING .

关于java - 如何检测另一个java线程是否被挂起或卡住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28618823/

相关文章:

java - 使用 XMPP 服务器和 Google Cloud Messaging(或更新的 Firebase Cloud Messaging)推送通知的 Android 聊天应用程序

java - 使用java 2D图形旋转的黑色区域?

java - 如何正确缩放给定坐标以适应 View 的边界而不失真?

java - Swing - 对 JTable 的行进行排序,但将它们按一列分组,并且只在每组顶部显示一次值

c++ - 使用 promise 和 future 将值从子线程传递给主线程

java - 非阻塞 PipedStreams?

循环中的 Python 线程但具有最大线程

three.js - 尽管加载了 Material ,但模型显示为空白(黑色)纹理

java - 关于旋转text3d

python - 在 matplotlib 中组合多个热图