ctrlコンソールで-を押すcと、どのシーケンスでアプリケーション スレッドが停止し、シャットダウン フックが呼び出されますか?
12538 次
2 に答える
12
javadocs によると、JVM がシャットダウンを開始すると、登録されたシャットダウン フックが不特定の順序で呼び出されます。たとえば、CTRL-C に応答して。
アプリケーション スレッドは、明確に定義された方法で「停止」されることはありません。実際、プロセスが終了するまで実行し続ける可能性があります。
スレッドを正常な方法でシャットダウンする場合は、シャットダウン フックで何かを実行して、これを発生させる必要があります。たとえば、シャットダウン フックを呼び出しThread.interrupt()
てワーカー スレッドに実行中の処理を停止するように指示join()
し、それが発生したことを確認するために呼び出します。
于 2012-07-11T16:03:02.163 に答える
5
I know that you can specify what should happen when Ctrl-C is being hit by adding a shutdown hook. But I'm not sure in what order.
private static void createShutDownHook()
{
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable()
{
@Override
public void run()
{
System.out.println();
System.out.println("Thanks for using the application");
System.out.println("Exiting...");
}
}));
}
于 2012-07-11T15:01:10.000 に答える