私はスタンドアロン アプリケーションを使用しており、start-->shutdown
.
使うsignalhandlers
ことでできることがわかりました。
シグナルハンドラの使い方を教えてくれる人がいますか
2012年5月更新(2年半後)
Trejkaz のコメント:
INT
Java の現在のバージョンでは、" " シグナルが "VM または OS によって予約されている"ため、このシグナル処理コードは失敗します。
さらに、他の有効なシグナル名は、何かがアプリケーションを閉じるように要求したときに実際に発火するものではありません (私が見つけることができたものすべてを丹念にテストしただけです...)
シャットダウンフックはほとんど機能しますが、私たちの場合は起動しないので、次のステップは明らかに、JVM の背後でハンドラーを登録することです。
「 HotSpot VM のトラブルシューティング ガイド」の「シグナルと例外処理の統合」の章では、Solaris OS および Linuxのシグナル「、、」についてのみ言及しています。
Windows での例外処理のみが言及されています。SIGTERM
SIGINT
SIGHUP
元の回答 (2009 年 9 月)
ShutdownHookはそのケースを処理できる必要があります
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
// what you want to do
}
}));
(警告あり)
も参照してください:
簡単なシグナル処理の例として:
public class Aaarggh {
public static void main(String[] args) throws Exception {
Signal.handle(new Signal("INT"), new SignalHandler () {
public void handle(Signal sig) {
System.out.println(
"Aaarggh, a user is trying to interrupt me!!");
System.out.println(
"(throw garlic at user, say `shoo, go away')");
}
});
for(int i=0; i<100; i++) {
Thread.sleep(1000);
System.out.print('.');
}
}
}