<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    xylz,imxylz

    關(guān)注后端架構(gòu)、中間件、分布式和并發(fā)編程

       :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      111 隨筆 :: 10 文章 :: 2680 評(píng)論 :: 0 Trackbacks

     

    我們知道線程是有多種執(zhí)行狀態(tài)的,同樣管理線程的線程池也有多種狀態(tài)。JVM會(huì)在所有線程(非后臺(tái)daemon線程)全部終止后才退出,為了節(jié)省資源和有效釋放資源關(guān)閉一個(gè)線程池就顯得很重要。有時(shí)候無(wú)法正確的關(guān)閉線程池,將會(huì)阻止JVM的結(jié)束。

    線程池Executor是異步的執(zhí)行任務(wù),因此任何時(shí)刻不能夠直接獲取提交的任務(wù)的狀態(tài)。這些任務(wù)有可能已經(jīng)完成,也有可能正在執(zhí)行或者還在排隊(duì)等待執(zhí)行。因此關(guān)閉線程池可能出現(xiàn)一下幾種情況:

    • 平緩關(guān)閉:已經(jīng)啟動(dòng)的任務(wù)全部執(zhí)行完畢,同時(shí)不再接受新的任務(wù)
    • 立即關(guān)閉:取消所有正在執(zhí)行和未執(zhí)行的任務(wù)

    另外關(guān)閉線程池后對(duì)于任務(wù)的狀態(tài)應(yīng)該有相應(yīng)的反饋信息。

    圖1 描述了線程池的4種狀態(tài)。

    • 線程池在構(gòu)造前(new操作)是初始狀態(tài),一旦構(gòu)造完成線程池就進(jìn)入了執(zhí)行狀態(tài)RUNNING。嚴(yán)格意義上講線程池構(gòu)造完成后并沒(méi)有線程被立即啟動(dòng),只有進(jìn)行“預(yù)啟動(dòng)”或者接收到任務(wù)的時(shí)候才會(huì)啟動(dòng)線程。這個(gè)會(huì)后面線程池的原理會(huì)詳細(xì)分析。但是線程池是出于運(yùn)行狀態(tài),隨時(shí)準(zhǔn)備接受任務(wù)來(lái)執(zhí)行。
    • 線程池運(yùn)行中可以通過(guò)shutdown()和shutdownNow()來(lái)改變運(yùn)行狀態(tài)。shutdown()是一個(gè)平緩的關(guān)閉過(guò)程,線程池停止接受新的任務(wù),同時(shí)等待已經(jīng)提交的任務(wù)執(zhí)行完畢,包括那些進(jìn)入隊(duì)列還沒(méi)有開(kāi)始的任務(wù),這時(shí)候線程池處于SHUTDOWN狀態(tài);shutdownNow()是一個(gè)立即關(guān)閉過(guò)程,線程池停止接受新的任務(wù),同時(shí)線程池取消所有執(zhí)行的任務(wù)和已經(jīng)進(jìn)入隊(duì)列但是還沒(méi)有執(zhí)行的任務(wù),這時(shí)候線程池處于STOP狀態(tài)。
    • 一旦shutdown()或者shutdownNow()執(zhí)行完畢,線程池就進(jìn)入TERMINATED狀態(tài),此時(shí)線程池就結(jié)束了。
    • isTerminating()描述的是SHUTDOWN和STOP兩種狀態(tài)。
    • isShutdown()描述的是非RUNNING狀態(tài),也就是SHUTDOWN/STOP/TERMINATED三種狀態(tài)。

     

    Executor-Lifecycle

    圖1

    線程池的API如下:

    ExecutorService-LifeCycle

    圖2

    其中shutdownNow()會(huì)返回那些已經(jīng)進(jìn)入了隊(duì)列但是還沒(méi)有執(zhí)行的任務(wù)列表。awaitTermination描述的是等待線程池關(guān)閉的時(shí)間,如果等待時(shí)間線程池還沒(méi)有關(guān)閉將會(huì)拋出一個(gè)超時(shí)異常。

    對(duì)于關(guān)閉線程池期間發(fā)生的任務(wù)提交情況就會(huì)觸發(fā)一個(gè)拒絕執(zhí)行的操作。這是java.util.concurrent.RejectedExecutionHandler描述的任務(wù)操作。下一個(gè)小結(jié)中將描述這些任務(wù)被拒絕后的操作。

     

    總結(jié)下這個(gè)小節(jié):

    1. 線程池有運(yùn)行、關(guān)閉、停止、結(jié)束四種狀態(tài),結(jié)束后就會(huì)釋放所有資源
    2. 平緩關(guān)閉線程池使用shutdown()
    3. 立即關(guān)閉線程池使用shutdownNow(),同時(shí)得到未執(zhí)行的任務(wù)列表
    4. 檢測(cè)線程池是否正處于關(guān)閉中,使用isShutdown()
    5. 檢測(cè)線程池是否已經(jīng)關(guān)閉使用isTerminated()
    6. 定時(shí)或者永久等待線程池關(guān)閉結(jié)束使用awaitTermination()操作

     



    ©2009-2014 IMXYLZ |求賢若渴
    posted on 2011-01-04 22:54 imxylz 閱讀(12582) 評(píng)論(6)  編輯  收藏 所屬分類(lèi): Java Concurrency

    評(píng)論

    # re: 深入淺出 Java Concurrency (30): 線程池 part 3 Executor 生命周期 2011-01-04 23:02 yeshucheng
    lz你寫(xiě)的東西,是時(shí)候把它轉(zhuǎn)成PDF附件,這樣以后閱讀更方便。  回復(fù)  更多評(píng)論
      

    # re: 深入淺出 Java Concurrency (30): 線程池 part 3 Executor 生命周期 2011-01-04 23:04 yeshucheng
    感覺(jué)你這里還少了幾個(gè)狀態(tài)的介紹,呵呵  回復(fù)  更多評(píng)論
      

    # re: 深入淺出 Java Concurrency (30): 線程池 part 3 Executor 生命周期 2011-01-04 23:05 xylz
    @yeshucheng
    這個(gè)建議不錯(cuò),整理完成了來(lái)一個(gè)完整的PDF吧,每一節(jié)搞一個(gè)PDF閑麻煩  回復(fù)  更多評(píng)論
      

    # re: 深入淺出 Java Concurrency (30): 線程池 part 3 Executor 生命周期 2011-01-04 23:06 xylz
    @yeshucheng
    還有么?這個(gè)狀態(tài)是線程池的,不是線程的狀態(tài)。  回復(fù)  更多評(píng)論
      

    # re: 深入淺出 Java Concurrency (30): 線程池 part 3 Executor 生命周期 2012-11-14 11:14 yufeng
    有isTerminating 這個(gè)方法?
    isShutdown 和 isTerminated 的意思好像不太對(duì)哦。。  回復(fù)  更多評(píng)論
      

    # re: 深入淺出 Java Concurrency (30): 線程池 part 3 Executor 生命周期[未登錄](méi) 2014-08-25 11:46 nemo
    請(qǐng)問(wèn)ThreadPoolExecutor是否有查看線程池是否空閑,當(dāng)前有多少個(gè)線程正在工作的接口呢....

    我submit一個(gè)runnable接口任務(wù),最后怎樣來(lái)確認(rèn)這些在線程池中的任務(wù)都完成了呢?  回復(fù)  更多評(píng)論
      


    ©2009-2014 IMXYLZ
    主站蜘蛛池模板: 亚洲三级在线播放| 成人免费一级毛片在线播放视频| 日本高清免费网站| 亚洲AV第一成肉网| 国产精品亚洲不卡一区二区三区| 91手机看片国产永久免费| 亚洲精品无码日韩国产不卡av| 亚洲AV成人无码久久精品老人| 无码av免费毛片一区二区| 黄色网址在线免费观看| 亚洲欧洲日韩极速播放| 日韩亚洲Av人人夜夜澡人人爽| 成年女人视频网站免费m| 日日麻批免费40分钟无码| 亚洲av无码日韩av无码网站冲| 亚洲激情校园春色| 久久亚洲精精品中文字幕| 亚洲色精品vr一区二区三区 | 女人18毛片a级毛片免费视频| 小说区亚洲自拍另类| 亚洲视频精品在线| 亚洲中文字幕在线第六区| 又粗又黄又猛又爽大片免费| 免费一区二区三区| a级大片免费观看| 一级人做人a爰免费视频| 亚洲国产成人久久综合一 | 久久精品国产精品亚洲毛片| 久久精品国产亚洲Aⅴ蜜臀色欲| 成人黄页网站免费观看大全| 99视频在线免费看| 国产免费无码一区二区| 久青草国产免费观看| 亚洲日韩国产精品乱-久| 久久亚洲国产精品五月天婷| 午夜免费不卡毛片完整版| 亚洲精品在线免费观看| 亚洲国产成a人v在线观看| 亚洲精品无码久久久久久久 | 狠狠热精品免费观看| 亚洲国产高清国产拍精品|