我已經走過了許多關於停止線程的現有答案。我複製下面一段典型的代碼。如果我的工作人員沒有重複完成,我該如何停止一個線程?
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方法我做的是一個連續的,單一路徑的事情,所以我沒有機會來檢查中斷狀態的兩倍。例如,我想停止搜索所有磁盤內容的線程,並且需要很長時間。
我該如何阻止它?
*「我想停止搜索所有磁盤內容的線程」*並通過目錄將其切換到該目錄?如果它使用遞歸或迭代模式遍歷文件系統,那麼每次都有一個「繼續」標記被檢查的機會。 –
是的,你是對的。但這僅僅是一個例子。如果它不能被放入循環代碼中,我該如何解決它?謝謝。 –
*「但這只是一個例子。」*如果沒有說明前提條件,這是一個非常糟糕的例子。 –