当多个线程运行时,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/