ディレクトリのファイル変更を監視する Runnable クラスを作成しました。
... imports ...
public class ExamplePathWatch implments Runnable {
...
private boolean isRunning = true;
...
@Override
public void run() {
while(isRunning) {
[1]... wait for a file change ...
[2]... notify listeners of file change (if any) ...
}
}
public synchronized void stopPathWatch() {
isRunning = false;
... interrupt [1] and allow the thred to exit immediately...
}
スレッドは、ファイルの変更が発生するか、 [1] で現在の待機を設定および中断するメソッドが呼び出されるまで、[ 1 ]で一時停止します。stopPathWatch()
isRunning = false
メイン アプリケーションが終了する直前にstopPathWatch()
が呼び出され、スレッドが終了し、アプリケーション全体が完全に終了します。
私の問題は、アプリケーションがクラッシュすると、メインアプリケーションstopPathWatch()
が呼び出されずに終了することです。したがって、アプリケーションは、OS によって強制終了されるまで、バックグラウンドで無期限に実行され続けます。
アプリケーションの開発は非常に活発であり、すべての例外が処理されるわけではないため、メイン アプリケーションがどのように終了しても子スレッドを確実に停止するための推奨される方法はありますか?
ありがとう