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

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

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

    新的起點 新的開始

    快樂生活 !

    深入淺出多線程(6)分析并行包線程池的設計與實現

     接上篇,在上篇中介紹了線程池的設計需求以及使用,在這里我們分析Concurrent包中線程池的實現類ThreadPoolExecutor的設計,是不是感覺沒意義,人家都實現了還分析啥?當然是提高我們自身的設計能力了。對于設計能力的提高,我認為一方面我們要在具體實踐中,能夠學習前人
    總結的設計思想(比如設計模式之類的),根據具體上下文,能夠融會貫通的使用他們。另一方面分析優秀的框架設計與實現也是很好的方式,當然JDK設計是最好的學習資料。閑話多了,切入主題,設計要點:
    1.     縱觀在JDK1.5以前我們自己實現的線程池,還是Concurrent提供的線程池,在線程池中首先我們要兩個容器維護    線程池中的線程 與     提交給線程池中的Task。
    2.     線程池與Task如何關聯,什么樣的Task才可以提交的該線程池中執行呢。所以我們要定義一個接口,分離線程池與具體
    3.     Task的耦合關系,ThreadPoolExecutor可以接受實現Runnable接口或者Callable接口(其實最后也是組裝為Runnable接口)的具體Task。
    4.    線程池中的線程從Task隊列中去Task執行。
        以上就是線程池設計的要點。
        在ThreadPoolExecutor中,有一個內部類Worker,實現了Runnable,也就是線程池中的線程,不言而喻,它的Run方法就是從Task隊列
       取Task,調用Task的run方法(Task 是實現了Runnable接口的),執行Task,依次類推,直到沒有隊列里面Task。看下圖
         了解了線程的創建以及執行Task的流程,下面讓我們在看看ThreadPoolExecutor是如何觸發創建線程池線程的呢? 何時啟動線程池里的
    線程執行Task呢?再這之前,我們先說明一下,在ThreadPoolExecutor中引入了兩個描述線程池中線程數量的屬性,corePoolSize和         maximumPoolSize
         corePoolSize 初始化時線程池中線程的數量。
        maximumPoolSize 線程池中的程的最大數量,當Task無法插入Task隊列,線程池線程數量又達到maximumPoolSize時,啟用Reject策略,
        Reject過多的Task。
    下圖說明了當我們創建一個線程池,并提交Task時,ThreadPoolExecutor首先判斷是否達到corePoolSize,沒有就在創建一個線程,提高吞吐量。如果超過那么直接將該Task插入Task隊列。
    如果插入失敗,說明Task隊列已滿,那么嘗試是否達到maximumPoolSize,如果沒有,那么創建而外的線程處理改
    Task,減低Task失敗率。
    如果已經達到了maximumPoolSize,對不起,只能Reject了。


    這其實是線程池設計處理Task的策略。大家可以細細體會,這個策略的優勢。
        到現在其實已經基本說明了ThreadPoolExecutor的設計了,其實設計思想是不是跟以前我們自個設計線程池都一樣?只是在具體實現上更加完善,更加完美!
    對了大家如果感興趣可以看看ThreadPoolExecutor如何優雅的Shutdown,這些設計實現細節,都可以在我們的實踐中應用。

    posted on 2008-09-06 23:14 advincenting 閱讀(2366) 評論(1)  編輯  收藏

    評論

    # re: 深入淺出多線程(6)分析并行包線程池的設計與實現 2009-03-27 14:46 wavefly

    corePoolSize 初始化時線程池中線程的數量。
    maximumPoolSize 線程池中的程的最大數量,當Task無法插入Task隊列,線程池線程數量又達到maximumPoolSize時,啟用Reject策略,

    這個Task隊列的空間大小是多少?maximumPoolSize - corePoolSize 的差值嗎?
    謝謝  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    公告

    Locations of visitors to this pageBlogJava
  • 首頁
  • 新隨筆
  • 聯系
  • 聚合
  • 管理
  • <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    統計

    常用鏈接

    留言簿(13)

    隨筆分類(71)

    隨筆檔案(179)

    文章檔案(13)

    新聞分類

    IT人的英語學習網站

    JAVA站點

    優秀個人博客鏈接

    官網學習站點

    生活工作站點

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 777爽死你无码免费看一二区| 久久天天躁狠狠躁夜夜免费观看| 国产黄片不卡免费| 67194国产精品免费观看| 国产成人免费片在线视频观看| 亚洲人成人77777网站| 亚洲一区二区三区免费视频| 青青久久精品国产免费看| 最近免费中文字幕大全免费 | 亚洲一区免费在线观看| 久久久久久精品成人免费图片| 日本免费高清一本视频| 午夜亚洲国产理论秋霞| 无码天堂va亚洲va在线va| 免费观看黄色的网站| 亚洲人成人77777在线播放| 久久免费国产精品| 国产成人综合久久精品免费| 黑人粗长大战亚洲女2021国产精品成人免费视频 | mm1313亚洲国产精品美女| 亚洲精品欧洲精品| a级成人毛片免费图片| 日本大片在线看黄a∨免费| 国产亚洲视频在线观看| 成人毛片免费网站| 亚洲精品成人网站在线播放| 2021国产精品成人免费视频| 亚洲国产成人久久综合一| 一二三区免费视频| 国产一级高清视频免费看| 亚洲熟女精品中文字幕| 成人免费的性色视频| 午夜亚洲国产理论片二级港台二级| 国产香蕉免费精品视频| 亚洲成在人线在线播放无码| www.黄色免费网站| 国产成人综合亚洲绿色| 亚洲日本乱码在线观看| 97视频热人人精品免费| 一区二区三区在线免费观看视频| 中文字幕亚洲综合久久2|