前提条件:代码进入到与finally配套的try/catch语句中。
1.写入代码:System.exit(0),它表示退出当前Java虚拟机,一旦退出Java虚拟机,任何代码都不会再执行。
2.线程被终止或打断:如果当一个线程在执行 try 语句块或者 catch 语句块时被打断(interrupted)或者被终止(killed),与其相对应的 finally 语句块可能不会执行。还有更极端的情况,就是在线程运行 try 语句块或者 catch 语句块时,突然死机或者断电,finally 语句块肯定不会执行了。
3.当线程为守护线程时,如果主线程死亡了,finally也不会执行的。