不使用 stop() 殺死執行緒
在多執行緒程式設計中,可能有必要終止執行緒。雖然 stop() 方法提供了一個突然的解決方案,但由於潛在的資源洩漏,不鼓勵使用它。本文研究了執行緒終止的另一種方法:中斷。
使用中斷
中斷方法向執行緒發出訊號以優雅地終止其執行。呼叫時,執行緒檢查其中斷狀態,如果為 true,則拋出 InterruptedException。可以在執行緒的 run 方法中擷取並處理此異常,使其清理資源並正常退出。
以下是使用中斷的範例:
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(); } }
注意事項
已發佈程式碼
發佈的程式碼有幾個問題:
總之,使用中斷提供了一種更受控制的線程終止方法,確保正確清理資源。不過,這需要被停止的線程的配合。
以上是如何在不使用 stop() 的情況下安全地終止 Java 執行緒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!