我已经浏览了许多关于停止线程的现有答案。我在下面复制了一段典型的代码。
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循环代码中检查中断状态。如果我在run方法中做的是顺序单路径的事情所以我没有机会检查两次中断状态。例如,我想停止一个正在搜索所有磁盘内容的线程,它需要很多时间。
我怎样才能阻止它?