http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.htmlに記載されているように、JVMがfinally()を呼び出さないケースを特定するサンプルプログラムを作成しようとしていました。
注: try または catch コードの実行中に JVM が終了すると、finally ブロックが実行されない場合があります。同様に、try または catch コードを実行しているスレッドが中断または強制終了された場合、アプリケーション全体が続行されても、finally ブロックが実行されない可能性があります。
しかし、私が書いたすべてのケースで、finally が呼び出されています ( and のthread.suspend()
ないケースを除く)。他のさまざまなフォーラムで言及されているのとは対照的に、最終的にも呼び出されます (以下のコード スニペット)。thread.resume()
System.exit()
thread.stop()
誰でも助けることができますか?ありがとう。
try {
final Thread thread = Thread.currentThread();
new Thread(new Runnable() {
@Override
@SuppressWarnings(value = "deprecation")
public void run() {
thread.stop();
// thread.suspend();
}
}).start();
while (true)
Thread.sleep(1000);
} finally {
System.out.print("finally called after stop");
}