最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android之線程池ThreadPoolExecutor的簡介

 更新時間:2019年03月12日 15:50:00   作者:smile0528  
今天小編就為大家分享一篇關于Android之線程池ThreadPoolExecutor的簡介,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

Android中的線程池ThreadPoolExecutor解決了單線程下載數(shù)據(jù)的效率慢和線程阻塞的的問題,它的應用也是優(yōu)化實現(xiàn)的方式。所以它的重要性不言而喻,但是它的復雜性也大,理解上可能會有問題,不過作為安卓工程師,了解這個也是必然的。

ThreadPoolExecutor有幾個構造函數(shù),最多參數(shù)的構造函數(shù)最常用,下面會詳細介紹各個參數(shù)的含義及其幾個參數(shù)之間的關系:

<span style="font-size:18px;">ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, handler)</span>

各個參數(shù)的含義:

corePoolSize: 核心線程數(shù),能夠同時執(zhí)行的任務數(shù)量

maximumPoolSize:除去緩沖隊列中等待的任務,最大能容納的任務數(shù)(其實是包括了核心線程池數(shù)量)

keepAliveTime:超出workQueue的等待任務的存活時間maximumPoolSize放置的一個線程的存活時間

unit:時間單位

workQueue:阻塞等待線程的隊列,一般使用new LinkedBlockingQueue<Runnable>()這個,如果不指定容量, 會一直往里邊添加,沒有限制,workQueue永遠不會滿;

threadFactory:創(chuàng)建線程的工廠,使用系統(tǒng)默認的類

handler:當任務數(shù)超過maximumPoolSize時,對任務的處理策略,默認策略是拒絕添加

需要注意的是這里的handler與安卓中的handler不同

執(zhí)行流程:

當線程數(shù)小于corePoolSize時,每添加一個任務,則立即開啟線程執(zhí)行

當corePoolSize滿的時候,后面添加的任務將放入緩沖隊列workQueue等待;

當workQueue也滿的時候,看是否超過maximumPoolSize線程數(shù),如果超過,默認拒絕執(zhí)行

總結來說:核心線程corePoolSize、任務隊列workQueue、最大線程maximumPoolSize,如果三者都滿了,使用handler處理被拒絕的任務。當一個線程的存活時間到達指定的存活時間索命該線程的任務已執(zhí)行完,該線程的生命周期結束,被拒絕的線程可以重新進入線程池中開始任務,依次循環(huán)此過程。

舉例說明:

假如:

corePoolSize=2,maximumPoolSize=3,workQueue容量為8;

最開始,執(zhí)行的任務A,B,此時corePoolSize已用完,再次執(zhí)行任務C,則C將被放入緩沖隊列workQueue中等待著,如果后來又添加了7個任務,此時workQueue已滿,則后面再來的任務的數(shù)量是5將會和maximumPoolSize比較,由于maximumPoolSize為3,所以只能容納1個了,因為包含corePollSize個數(shù),所以后面來的任務默認都會被拒絕4個。

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

最新評論

临泽县| 威远县| 天等县| 于田县| 沙坪坝区| 河源市| 彭州市| 武鸣县| 泸州市| 喜德县| 高碑店市| 繁昌县| 商洛市| 绍兴县| 麻江县| 海盐县| 柳林县| 灌阳县| 轮台县| 靖宇县| 治多县| 凭祥市| 西畴县| 六盘水市| 芷江| 崇明县| 屯门区| 台东市| 丁青县| 桐梓县| 广安市| 包头市| 宁阳县| 营山县| 吉木乃县| 虹口区| 宁德市| 吉水县| 揭东县| 克什克腾旗| 和林格尔县|