私は、通常は常にアクティブな Java オンライン分散アプリケーションを開発しました ( GUI ではありません)。
管理者がそのようなシャットダウンに関心がある場合に備えて、シャットダウンの前にいくつかの手順を実行したいと考えています。
CTRL^C が JVM を停止することはわかっています。JVM をシャットダウンする前に CTRL^C をフックして追加の操作を実行したり、同じことを行うために CTRL^D イベントにフックを追加したりできるのではないかと思います。
同様の質問について説明している投稿がどこかにあるとほぼ確信しています。そのような投稿へのリンクをいただければ幸いです。
サードパーティの外部 jar や JNI ソリューションには興味がありません。
同じ質問について議論している投稿がない場合は、コード例のスニペットをいただければ幸いです。
追加の制約:このソリューションは、UNIX と Windows の両方で機能する必要があります。
編集
ここで提案された 1 つの解決策は、Runtime.getRuntime().addShutdownHook(new Thread() {})
私が理解している限り、シャットダウンイベントが発生するのをリッスンして待機する新しいスレッドが作成されます。
どういうわけか、シャットダウンが発生したことをメインスレッドに通知できるのでしょうか(前述のように分散システムがあり、そのようなイベントを各スレッドに通知する必要があります)?
このイベントをリッスンする複数のスレッドを追加できますか?