当多个线程时,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
}
}
答案 0 :(得分:1)
如果你面临死锁,那么这意味着application has designed very BAD
!死锁不是一个例外,所以你可以管理你的互斥锁和资源,这样就不会出现任何死锁。
但是当一个线程要等待wait()
信号时,你只会给notify()
方法一个超时。像这样的东西。
public void run(){
...
_mutex.wait(10000);//release the lock and waits for 10 seconds
...
}
并且关于你的疑问,JVM不会自行挂起!