线程死锁可以挂起整个JVM本身吗?

时间:2013-10-27 22:12:45

标签: java performance deadlock

当多个线程时,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
  }

}

1 个答案:

答案 0 :(得分:1)

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

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

并且关于你的疑问,JVM不会自行挂起!