Java併發編程之基礎篇(七)——取消及關閉

上一篇中我們注重講了線程和任務的啓動,所以如何啓動線程和任務我們已經很清楚了,但是如何做到線程及任務安全的關閉及取消,也是有一定技巧的。

取消任務

大部分場景下,啓動的任務都會按照計劃正常的運行,然後結束。但是有些場景我們必須提前結束任務。比如

  1. 用戶發送了取消請求。
  2. 超過了某個規定的時間。
  3. 發生了某種錯誤。
  4. 應用程序被關閉。

Java裏面取消任務的執行一般有兩種方法。

第一種方法,設置一個標誌位,任務執行過程會檢查該標誌位,如果爲true則結束任務。該方法對於執行阻塞調用的情況下會有缺陷,下面會詳細說

第二種方法,通過中斷來安全的結束任務。

標誌位

假設有一個產生偶數的生成器,我們希望通過設置一個標誌位來結束該任務,否則這個任務會一直運行下去。
定義一個偶數生成任務,示例代碼如下

public class EvenGenerateTask implements Runnable{
    private int count = 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章