1
当运行在其中的多个线程 陷入死锁时,Java虚拟机是否有可能自行挂起? 我想问这个问题的目的是: 如果我知道线程可能死锁,我想把一些恢复逻辑,如超时 什么的,并处理这种情况。 如果Java虚拟机自身挂起,则不起作用。线程死锁可以挂起整个JVM本身吗?
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
}
}
根据定义,死锁不会抛出异常。它会让死锁的线程永远等待。如果死锁是可能的,那么修复代码,使它不再可能。 –
@JB Nizet Tks。我的例子是错误的,但我的问题基本上是知道线程死锁是否可以挂起整个JVM,或者其他部分的应用程序仍然可以继续运行? – supernova
根据定义,死锁会导致一些线程永远等待。如果这些死锁的线程是你的应用程序的唯一线程,那么什么也不会发生。如果有其他线程在运行,那么它们将继续运行。 –