Java でOSからの割り込みが入った時に中途半端な所でプログラムを終わらせないようにする良い方法はないでしょうか? 一応こちらで調べたところ sun.misc.Signal, sun.misc.SignalHandler を使えば出来ることはわかりましたがこれは非推奨で削除される可能性があります。 しかしこれを使えばC言語でやっているようなシグナルハンドラでvolatileのフラグ変数の値を変えてすぐ元の処理に戻り、元の処理では丁度終わらせて良い切りの良い所でその値を確認して終わらせるというような事ができます。 Runtime#addShutdownHook() は終了時に何かを動かすことができることはわかったのですがあくまでもそれまで動いていたプログラムが停止した後の処理なので本流の処理が中途半端な箇所で終わりになってしまう事を避けられません。 やはり sun.misc.Signal 等を使うしか方法はないのでしょうか?
↧