当多个线程运行时,Java虚拟机是否可能会自身挂起
    陷入僵局?
    我问这个问题的目的是:
    如果我知道线程可以在哪里死锁,我想添加一些恢复逻辑,例如超时
    或处理某些情况。
    如果Java虚拟机自身挂起,则将无法运行。

Class TwoThreads{

try{
Thread threadA = new Thread();
Thread threadB = new Thread();
// some multithreaded logic goes here where deadlock possible
catch(Throwable t){
  threadA.interrupt();
  // some handler logic
  }

}

最佳答案

如果您遇到死锁,则表示application has designed very BAD!死锁并不是一种例外,因此您将以不会出现任何死锁的方式管理互斥体和资源。
但是只要线程要等待wait()信号,您只需给notify()方法超时。这样的事情。

public void run(){
...
  _mutex.wait(10000);//release the lock and waits for 10 seconds
...
}


关于您的疑问,JVM不会自动挂起!

关于java - 线程死锁能否将整个JVM本身挂起?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19624252/

10-15 15:08