前面提到過三種停止執行緒的方式,這三種方式不是被廢棄就是可能造成return汙染,最後雖然建議用拋異常法,但拋異常法依靠的是異常處理機制,下面介紹一種更常用的的停止執行緒的方法:通過在實現runnable介面的類裡面(或者是在繼承thread類的類裡面)定義乙個boolean型別的變數(標記),然後對變數(標記)進行判斷處理,從而達到停止執行緒的目的。
下面是簡單示例:
執行結果如圖所示:/*
* 如何正常終止乙個執行緒?
* 需求:執行緒啟動5s之後停止
*/public
class
test }/*
* 通過在實現runnable介面的類裡面(或者是在繼承thread類的類裡面)定義乙個boolean型別的變數,然後對變數進行判斷處理,
* 從而達到停止執行緒的目的
*/class
myrunnable
implements
runnable catch (interruptedexception e)
system.out.println(thread.currentthread().getname() + "---->" + i);
} else }}
}
執行結果圖
由圖可知,執行緒啟動5s後成功停止。
執行緒停止繼續 如何優雅的停止乙個執行緒?
在之前的文章中 i code.online 併發程式設計 執行緒基礎 我們介紹了執行緒的建立和終止,從原始碼的角度去理解了其中的細節,那麼現在如果面試有人問你 如何優雅的停止乙個執行緒?你該如何去回答尼 能不能完美的回答尼?這裡有個思考 當處於sleep時,執行緒能否感受到中斷訊號?對於執行緒的停止...
如何停止乙個執行緒
停止乙個執行緒的最佳方法是讓它執行完畢,沒有辦法立即停止乙個執行緒,但你可以控制何時或什麼條件下讓他執行完畢。通過條件變數控制線程的執行,執行緒內部檢查變數狀態,外部改變變數值可控制停止執行。為保證執行緒間的即時通訊,需要使用volatile關鍵字或鎖,確保讀執行緒與寫執行緒變數狀態的一致性。pub...
如何優雅的停止乙個執行緒
首先我們先了解下,執行緒是分為使用者執行緒和守護執行緒的,他們的區別就在 使用者執行緒當我們的主線程停止後,使用者執行緒不會隨著主線程停止。守護執行緒當我們的主線程停止後,會跟隨著主線程一起停止。一般我們建立的都是使用者執行緒,那守護執行緒有哪些呢,例如跟程式一起啟動的gc執行緒就是守護執行緒。停止...