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

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

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

    新的起點(diǎn) 新的開始

    快樂生活 !

    深入淺出多線程(5)以并行包線程池為例說(shuō)說(shuō)線程池的設(shè)計(jì)需求及使用

    接深入淺出多線程系列4,
        線程對(duì)象的創(chuàng)建和銷毀是需要花費(fèi)系統(tǒng)資源的,通過(guò)線程池,可以避免該問題并提高系統(tǒng)的響應(yīng)時(shí)間。這種情形類似我們常提到的數(shù)據(jù)庫(kù)連接池。

       線程池的廣泛應(yīng)用使得在SUN在JDK 1.5的工具包提供了線程池的支持。我計(jì)劃將該系列分為設(shè)計(jì)需求與設(shè)計(jì)實(shí)現(xiàn)兩個(gè)部分。這樣會(huì)更加清晰。如果想要熟悉,并熟練應(yīng)用線程池,那么通過(guò)設(shè)計(jì)需求篇也就是該篇就可以找到答案。如果想探究實(shí)現(xiàn)的細(xì)節(jié),那么在設(shè)計(jì)實(shí)現(xiàn)篇會(huì)有深入的說(shuō)明。
       本文以Concurrent包線程池設(shè)計(jì)為例,討論線程池的設(shè)計(jì)。
    1. 線程池需求
        設(shè)計(jì)與實(shí)現(xiàn)的最終目標(biāo)是滿足需求,這是軟件開發(fā)的基本原則。我們先考慮考慮對(duì)線程池的需求。作為一名開發(fā)人員,我們最主要的需求就是線程池簡(jiǎn)單,易用。即使你的設(shè)計(jì)算法多么優(yōu)雅,但給使用者復(fù)雜的使用步驟也是得不償失,簡(jiǎn)單就是美!最好我們不用深究你的具體實(shí)現(xiàn),通過(guò)簡(jiǎn)單的接口就可以應(yīng)用。其次就是技術(shù)角度,線程池的設(shè)計(jì)應(yīng)該是比較柔性的,提供很好的可配置可管理與可擴(kuò)張性。
        對(duì)于可配置可管理的需求,至少的提供以下的功能點(diǎn):
    •   線程池里,線程數(shù)量的配置。
    •   能夠提供動(dòng)態(tài)調(diào)整線程的數(shù)量。
    •   能夠Shutdown 最好能夠提供優(yōu)雅的Shundown,而不是像我們通過(guò)切斷電源關(guān)閉機(jī)器那樣粗暴的Shutdown。
    •   能夠提供Task的狀態(tài),比如完成了多少,還有多少?zèng)]有完成。
       對(duì)于可擴(kuò)展性而言有以下幾點(diǎn):
    •    如果不能滿足需要能夠很容易的擴(kuò)展。
    •    對(duì)于線程池線程的創(chuàng)建能否提夠擴(kuò)展。
    •    當(dāng)提交的Task負(fù)載過(guò)大時(shí),線程池的處理策略能否擴(kuò)展。
         以上是對(duì)線程池的需求的討論。
        
      2.上面就這些對(duì)于我們使用者而言,對(duì)線程池的需求,下面我們分析Concurrent包提供的線程池是否達(dá)到了我們的需求。
          對(duì)于易用的需求。
          Concurrent的Executors類,注意不是Executor接口,通過(guò)Factory模式提供了我們以下的基本的線程池,如果沒有
          特殊的需求,只需查閱這幾個(gè)線程池JDK文檔,就可以使用了。
    •    newFixedThreadPool 顧名思義,建立固定大小的線程池。
    •    newCachedThreadPool 根據(jù)需要?jiǎng)討B(tài)的創(chuàng)建線程,該線程池我們?cè)谏钊胂盗?做了討論。
    •    newSingleThreadExecutor 如其名。
    •    newScheduledThreadPool  如其名,該線程池類似于JDK1.4 Timer提供的功能,但更完善,我會(huì)在隨后的深入淺出系列討論其不同    點(diǎn)。
           總之,從易用性的角度見,Concurrent包提供的接口是不錯(cuò)的。
          對(duì)于可配置,可管理講:
    •    提供了可以配置線程池中線程的數(shù)量的功能。比如在創(chuàng)建newFixedThreadPool時(shí),第一個(gè)參數(shù)就是線程池線程的數(shù)量,通過(guò)
    •           該數(shù)量的配置,我們就可以保證不會(huì)因?yàn)榫€程的過(guò)多導(dǎo)致系統(tǒng)的崩潰。
    •    提供了在運(yùn)行時(shí)通過(guò)setCorePoolSize和setMaximumPoolSize方法來(lái)調(diào)整線程池?cái)?shù)量的功能,兩者的區(qū)別會(huì)在后續(xù)實(shí)現(xiàn)篇中說(shuō)明。
    •    提夠了優(yōu)雅的Shutdown,不在接受Task,將正在運(yùn)行的Task執(zhí)行完,處于等待狀態(tài)的Task 中斷。
    •     提供getTaskCount和getCompletedTaskCount方法可以獲取提交的Task和完成的Task數(shù)量。
           對(duì)于可擴(kuò)展性
    •     我們可以參考Executors的Factory模式,擴(kuò)展提供滿足需要的線程池。
    •     在構(gòu)造方法中,提供ThreadFactory接口,我們可以實(shí)現(xiàn)自定義的創(chuàng)建線程池線程的方法。
    •     提供了RejectedExecutionHandler接口,我們可以擴(kuò)張?jiān)摻涌冢峁┊?dāng)Task過(guò)多時(shí),處理策略,目前默認(rèn)為AbortPolicy策略Throw 一個(gè)RejectedExecutionException
           總之,Concurrent中Executors類通過(guò)Factory Method方法,提供了基本常用的線程池。 Executors 其實(shí)通過(guò)線程池實(shí)現(xiàn)類-ThreadPoolExecutor創(chuàng)建基本的線程池,所以我們可以通過(guò)ThreadPoolExecutor提供的API來(lái)配置擴(kuò)展來(lái)實(shí)現(xiàn)個(gè)性化需求的線程池。
         

    posted on 2008-09-06 23:01 advincenting 閱讀(2008) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    公告

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

    統(tǒng)計(jì)

    常用鏈接

    留言簿(13)

    隨筆分類(71)

    隨筆檔案(179)

    文章檔案(13)

    新聞分類

    IT人的英語(yǔ)學(xué)習(xí)網(wǎng)站

    JAVA站點(diǎn)

    優(yōu)秀個(gè)人博客鏈接

    官網(wǎng)學(xué)習(xí)站點(diǎn)

    生活工作站點(diǎn)

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲中文无码av永久| 又粗又大又猛又爽免费视频| 亚洲精品无码专区在线在线播放| 一级做a爰片久久免费| yy6080亚洲一级理论| 免费看一级一级人妻片| 国产一级一片免费播放| 亚洲AV日韩AV永久无码色欲| 最近2019中文字幕免费看最新 | 国产免费一区二区三区| 亚洲一区二区成人| 18禁美女裸体免费网站| 亚洲国产精品人久久电影| 国产在线观看麻豆91精品免费| 亚洲一级在线观看| 免费看少妇作爱视频| 日日摸日日碰夜夜爽亚洲| 伊在人亚洲香蕉精品区麻豆| 国产精品视频全国免费观看 | 无码日韩人妻av一区免费| 亚洲一区二区三区高清在线观看| 午夜毛片不卡高清免费| 香蕉97碰碰视频免费| 国外亚洲成AV人片在线观看 | 在线观看免费视频网站色| 久久精品国产亚洲沈樵| 精品无码免费专区毛片| 亚洲精品久久无码| 亚洲日韩国产精品乱| 国产精成人品日日拍夜夜免费| 亚洲男女一区二区三区| 成人免费视频试看120秒| 一二三区免费视频| 亚洲综合久久久久久中文字幕| 国产一级一片免费播放| 久久免费的精品国产V∧| 亚洲国产精品无码第一区二区三区 | 免费一级毛片在播放视频| 国产啪精品视频网站免费尤物 | 成人免费无码大片A毛片抽搐色欲 成人免费无码大片a毛片 | 亚洲网址在线观看|