如何正確的更好的停止乙個執行緒?

2021-08-06 06:28:47 字數 741 閱讀 9957

前面提到過三種停止執行緒的方式,這三種方式不是被廢棄就是可能造成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執行緒就是守護執行緒。停止...