2

私のアプリケーションでは、最後のトランザクションをクリーンアップして終了するためのシャットダウン フックを追加しました。すべてのドキュメントが述べているように、このフックは「通常の」シャットダウンでも呼び出されます-すべてが終了した場合。

しかし、私はユーザーにいくつかのフィードバックを提供したいと思います:

「ctrl-c が検出されました - 終了しようとしています...」

このフィードバックは、「突然」シャットダウンした場合にのみ提供したいものです。

シャットダウンフックでシャットダウンの種類を検出する方法はありますか?

4

1 に答える 1

0

前にその主題を検討したように、Ctrl-C通常のシャットダウン イベント ( kill -15 <pid>Linux の場合など) です。したがって、シャットダウン フックが機能するはずです。

javadoc から (用Runtime.addShutdownHook()): "

Java 仮想マシンは、次の 2 種類のイベントに応答してシャットダウンします。

最後の非デーモン スレッドが終了するか、exit (同等の System.exit) メソッドが呼び出されると、プログラムは正常に終了します。

仮想マシンは、^C の入力などのユーザー割り込み、またはユーザー ログオフやシステム シャットダウンなどのシステム全体のイベントに応答して終了します。

"。

kill -9 <pid>しかし、( Linux のように) キャッチされないシャットダウンもあります。この場合、それをキャッチして処理する方法はありません。プロセス (JVM) は OS レベルで強制終了され、アプリケーションに対してシグナルは生成されません。

于 2013-11-11T11:26:40.413 に答える