如何在不使用stop() 的情況下終止執行緒
使用stop() 方法終止執行緒可能會導致不可預測的行為。本文介紹了一種使用中斷來終止執行緒的替代方法。
stop() 的替代方法
與 stop() 不同,中斷會向執行緒發出訊號以優雅地結束其執行。中斷是透過Thread.interrupt()方法實現的。當執行緒被中斷時,它將拋出 InterruptedException。
實作範例
考慮以下程式碼:
public class HelloWorld { public static void main(String[] args) throws Exception { Thread thread = new Thread(new Runnable() { public void run() { try { while (!Thread.currentThread().isInterrupted()) { Thread.sleep(5000); System.out.println("Hello World!"); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } }); thread.start(); System.out.println("press enter to quit"); System.in.read(); thread.interrupt(); } }
在此範例中,執行緒像往常一樣建立並啟動。當使用者按下 Enter 鍵時,主執行緒使用 thread.interrupt() 中斷工作執行緒。工作執行緒透過拋出 InterruptedException 來處理中斷,然後清除中斷標誌。由於線程在循環內檢查中斷,因此它最終會在完成當前迭代後結束執行。
注意事項
以上是如何在不使用 stop() 的情況下安全地終止 Java 執行緒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!