14

ctrlコンソールで-を押すcと、どのシーケンスでアプリケーション スレッドが停止し、シャットダウン フックが呼び出されますか?

4

2 に答える 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 に答える