當遇到必須在執行中停止的長時間運行的執行緒時,優雅地這樣做以避免不可預測的後果至關重要.
要實現這一點,常見的方法是在執行緒的run() 方法中引入控制變數。此變數通常是一個布林標誌,充當發出終止請求信號的哨兵。
考慮以下範例:
class MyThread extends Thread { volatile boolean finished = false; public void stopMe() { finished = true; } @Override public void run() { while (!finished) { // Perform the necessary actions } } }
從主執行緒中,您可以透過以下方式優雅地停止執行呼叫stopMe() 方法:
MyThread myThread = new MyThread(); myThread.start(); // Wait some time to simulate work Thread.sleep(500); myThread.stopMe();
以前, Java 有一個stop() 方法,但由於它可能會破壞執行緒狀態並解鎖已取得的鎖,因此被宣告為不安全。因此,建議使用控制變數方法來確保乾淨且受控的執行緒終止。
以上是如何優雅地終止Java線程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!