我創建了一個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]直到一個文件變化時,或stopPathWatch()
方法被調用它設置isRunning = false
並中斷電流[1]等待。
就在主應用程序退出之前,調用了stopPathWatch()
,它允許線程退出並且整個應用程序完全終止。
我的問題是,當應用程序崩潰時,主應用程序終止,不調用stopPathWatch()
。因此,應用程序會一直在後臺運行,直到它通過操作系統被終止。
由於應用程序的開發非常活躍,並且並不是所有異常都得到處理,所以有一種推薦的方法可以確保子線程停止,無論主應用程序如何終止?
感謝
如果有任何線程仍在運行(線程!=進程),則您的應用程序不會崩潰。你對崩潰的定義是什麼? – Perception 2013-03-06 13:41:51
Call setDaemon() – 2013-03-06 13:42:14