我创建了一个 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()
。因此,应用程序会在后台无限期地运行,直到被操作系统杀死。
由于应用程序的开发非常活跃,并且并非所有异常都得到处理,是否有推荐的方法来确保无论主应用程序如何终止,子线程都会停止?
谢谢
最佳答案
您可以将ExamplePathWatch
作为守护线程运行。只有未标记为守护进程的线程才会阻止应用程序退出。
关于java - 确保主应用程序崩溃时停止无限循环线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15248885/