San*_*min 8 java multithreading deadlock interrupt
我想杀死陷入死锁状态的线程.首先,我们可以使用类中的方法检测处于死锁状态的线程ID.findDeadlockedThreads()ThreadMXBeanjava.lang.management
于是,我想通过杀死线程ID线程,因此我有两个相关的问题:
(1)如何获得通过线程ID线程的控制?
(2)如何杀死被阻塞的线程?我认为调用interrupt()方法会给线程一个异常并将杀死线程.
java.util.concurrent.Lock.lockInterruptibly()方法是可中断的,更常见的同步锁定不是.如文档中所述,枚举死锁线程的能力旨在作为调试辅助工具,而不是在生产环境中进行恢复的方法.
在生产中,退出整个过程并重新启动可能更安全.
从根线程组,您可以让 Thread 类枚举所有正在运行的线程。然后,您可以在与您的 ID 匹配的线程上调用 Thread.stop。
话虽如此,这是非常危险的,因为可能会使对象处于不一致的状态。我不相信中断方法会导致陷入等待同步锁的线程被释放,所以(邪恶的)停止方法
另请参阅:“ Java 线程原语弃用”。
| 归档时间: |
|
| 查看次数: |
9182 次 |
| 最近记录: |