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

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

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

    隨筆 - 9  文章 - 5  trackbacks - 0
    <2009年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(1)

    隨筆分類(lèi)

    隨筆檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    (文章本人原創(chuàng),若轉(zhuǎn)載請(qǐng)注明出處)

       在JDK1.5提供了一個(gè)線程池ThreadPoolExecutor,可以處理用戶(hù)提交過(guò)來(lái)的線程。如果把要處理的任務(wù)比作蓋一個(gè)大樓,那么每一個(gè)建筑工人就相當(dāng)于一個(gè)線程,那么這個(gè)ThreadPoolExecutor就好像包工頭,它來(lái)控制蓋這個(gè)大樓需要多少個(gè)工人,何時(shí)招進(jìn)新工人,何時(shí)辭退已經(jīng)長(zhǎng)時(shí)間沒(méi)有事做的工人,等等此類(lèi)事務(wù)。也就是說(shuō)用戶(hù)程序不斷提交新的線程,ThreadPoolExecutor執(zhí)行提交線程的同時(shí)會(huì)控制目前總共同時(shí)執(zhí)行的線程數(shù),銷(xiāo)毀已執(zhí)行完閑置的線程等控制行為,保留最少閑置線程數(shù),并且可以配置不同的處理策略。

       為什么要使用線程池呢,這與數(shù)據(jù)庫(kù)連接池的原理有點(diǎn)相仿,線程的創(chuàng)建是需要成本的,包括服務(wù)器CPU和內(nèi)存資源,由于多線程是并行運(yùn)行,程序運(yùn)行過(guò)程中可能有的線程已經(jīng)完成自身處理任務(wù),處于閑置狀態(tài),如果在這種情況下再不斷創(chuàng)建新任務(wù)就是在浪費(fèi)服務(wù)器資源,此時(shí)應(yīng)該盡量使用先前創(chuàng)建的好的并且是處理閑置狀態(tài)的線程來(lái)處理新任務(wù),而線程池就可以有效的對(duì)此進(jìn)行自動(dòng)化管理,當(dāng)然這個(gè)管理是可以由用戶(hù)配置的。

    ThreadPoolExecutor(int corePoolSize,
    int maximumPoolSize,
    long keepAliveTime,
    TimeUnit unit,
    BlockingQueue<Runnable> workQueue,
    RejectedExecutionHandler handler)

    這是線程池的構(gòu)建器,用戶(hù)程序通過(guò)這個(gè)構(gòu)建器傳參數(shù),corePoolSize是線程池中核心線程數(shù),運(yùn)行的線程數(shù)不能少于這個(gè)核心線程數(shù),否則就新建線程。maximumPoolSize是充許最大的線程數(shù)。keepAliveTime設(shè)置除核心線程外其它線程的空閑時(shí)間,超過(guò)這個(gè)時(shí)間線程就自動(dòng)終止。unit是指的keepAliveTime的時(shí)間單位。BlockingQueue接口按生產(chǎn)則消費(fèi)者算法設(shè)計(jì)的一個(gè)線程池內(nèi)部處理線程隊(duì)列的接口,有三種實(shí)現(xiàn)SynchronousQueue、LinkedBlockingQueue和ArrayBlockingQueue,在實(shí)際運(yùn)行程序時(shí)可以根據(jù)這三種實(shí)現(xiàn)得到不同的性能,比如有的實(shí)現(xiàn)可能在有新任務(wù)來(lái)時(shí)不新建線程,而是將其加入等待隊(duì)列,等有線程運(yùn)行完時(shí)再分配給其使用。具體實(shí)現(xiàn)還是參看它們的JDK文檔吧,這里站在使用的角度它們是可以調(diào)整運(yùn)行性能的開(kāi)關(guān)。當(dāng)最大線程和工作隊(duì)列容量都達(dá)到最大值時(shí),再提交給線程池新任務(wù)就會(huì)被拒絕,此時(shí)線程池會(huì)調(diào)用RejectedExecutionHandler 接口進(jìn)行處理,具體實(shí)現(xiàn)有四種策略。我們只需要選用其中一種在構(gòu)建ThreadPoolExecutor時(shí)傳入即可。具體四種實(shí)現(xiàn)還是參看JDK文檔吧。關(guān)于ThreadPoolExecutor的JDK文檔。至此控制線程池運(yùn)作的幾個(gè)參數(shù)都從構(gòu)建器中傳入了。

    posted on 2009-03-19 22:26 依然Fantasy 閱讀(846) 評(píng)論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 男男gay做爽爽免费视频| 一本无码人妻在中文字幕免费| 亚洲精品人成网在线播放影院| 久久久无码精品亚洲日韩软件| 毛片免费在线观看网站| 日韩视频免费在线观看| 免费国产a理论片| 亚洲精品午夜国产va久久| 久久精品国产亚洲av日韩| 伊人亚洲综合青草青草久热| 国产极品粉嫩泬免费观看| 成人免费一级毛片在线播放视频 | 57pao国产成视频免费播放| 好湿好大好紧好爽免费视频| 香蕉视频亚洲一级| 美女视频黄免费亚洲| 久久久无码精品亚洲日韩京东传媒| 国产AV无码专区亚洲AV毛网站| 亚洲综合激情另类专区| 亚洲日本va午夜中文字幕久久| 全亚洲最新黄色特级网站| 免费看男女下面日出水视频| 国产精品色午夜视频免费看 | 亚洲AV无码一区二区三区网址 | 亚洲免费视频网站| 日本免费中文视频| 在线免费播放一级毛片| 久青草视频97国内免费影视| 一区二区三区视频免费观看| 黄网站色视频免费观看45分钟| 亚洲乱色熟女一区二区三区蜜臀| 亚洲av无码久久忘忧草| 亚洲国产精品综合久久2007| 亚洲视频在线观看网站| 久久精品国产亚洲av水果派| 亚洲国产日韩在线成人蜜芽| 亚洲人成免费网站| 亚洲日本VA中文字幕久久道具| 亚洲AV无码一区二区乱子仑| 亚洲欧美日本韩国| 四虎影视在线看免费观看|