1

当其中运行的多个线程陷入死锁时,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
  }

}
4

1 回答 1

1

如果您面临僵局,那么这意味着application has designed very BAD!死锁也不例外,因此您可以管理互斥锁和资源,以免出现任何死锁。但只是当线程要等待信号时
,你会给方法一个超时。像这样的东西。wait()notify()

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

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

于 2013-10-27T22:32:28.637 回答