我创建了一个 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()
被调用。因此,应用程序会在后台无限期地运行,直到它被操作系统杀死。
由于应用程序的开发非常活跃,并且并非所有异常都得到处理,因此无论主应用程序如何终止,是否有推荐的方法来确保子线程停止?
谢谢