我已经走过了许多关于停止线程的现有答案。我复制下面一段典型的代码。如果我的工作人员没有重复完成,我该如何停止一个线程?
public class HelloWorld {
public static void main(String[] args) throws Exception {
Thread thread = new Thread(new Runnable() {
public void run() {
try {
while (!Thread.interrupted()) {
Thread.sleep(5000);
System.out.println("Hello World!");
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
});
thread.start();
System.out.println("press any key to quit");
System.in.read();
thread.interrupt();
}
}
但这种方法需要检查在while循环中断状态code.If我在run方法我做的是一个连续的,单一路径的事情,所以我没有机会来检查中断状态的两倍。例如,我想停止搜索所有磁盘内容的线程,并且需要很长时间。
我该如何阻止它?
*“我想停止搜索所有磁盘内容的线程”*并通过目录将其切换到该目录?如果它使用递归或迭代模式遍历文件系统,那么每次都有一个“继续”标记被检查的机会。 –
是的,你是对的。但这仅仅是一个例子。如果它不能被放入循环代码中,我该如何解决它?谢谢。 –
*“但这只是一个例子。”*如果没有说明前提条件,这是一个非常糟糕的例子。 –