Android之線程池ThreadPoolExecutor的簡介
Android中的線程池ThreadPoolExecutor解決了單線程下載數(shù)據(jù)的效率慢和線程阻塞的的問題,它的應(yīng)用也是優(yōu)化實現(xiàn)的方式。所以它的重要性不言而喻,但是它的復雜性也大,理解上可能會有問題,不過作為安卓工程師,了解這個也是必然的。
ThreadPoolExecutor有幾個構(gòu)造函數(shù),最多參數(shù)的構(gòu)造函數(shù)最常用,下面會詳細介紹各個參數(shù)的含義及其幾個參數(shù)之間的關(guān)系:
<span style="font-size:18px;">ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, handler)</span>
各個參數(shù)的含義:
corePoolSize: 核心線程數(shù),能夠同時執(zhí)行的任務(wù)數(shù)量
maximumPoolSize:除去緩沖隊列中等待的任務(wù),最大能容納的任務(wù)數(shù)(其實是包括了核心線程池數(shù)量)
keepAliveTime:超出workQueue的等待任務(wù)的存活時間maximumPoolSize放置的一個線程的存活時間
unit:時間單位
workQueue:阻塞等待線程的隊列,一般使用new LinkedBlockingQueue<Runnable>()這個,如果不指定容量, 會一直往里邊添加,沒有限制,workQueue永遠不會滿;
threadFactory:創(chuàng)建線程的工廠,使用系統(tǒng)默認的類
handler:當任務(wù)數(shù)超過maximumPoolSize時,對任務(wù)的處理策略,默認策略是拒絕添加
需要注意的是這里的handler與安卓中的handler不同
執(zhí)行流程:
當線程數(shù)小于corePoolSize時,每添加一個任務(wù),則立即開啟線程執(zhí)行
當corePoolSize滿的時候,后面添加的任務(wù)將放入緩沖隊列workQueue等待;
當workQueue也滿的時候,看是否超過maximumPoolSize線程數(shù),如果超過,默認拒絕執(zhí)行
總結(jié)來說:核心線程corePoolSize、任務(wù)隊列workQueue、最大線程maximumPoolSize,如果三者都滿了,使用handler處理被拒絕的任務(wù)。當一個線程的存活時間到達指定的存活時間索命該線程的任務(wù)已執(zhí)行完,該線程的生命周期結(jié)束,被拒絕的線程可以重新進入線程池中開始任務(wù),依次循環(huán)此過程。
舉例說明:
假如:
corePoolSize=2,maximumPoolSize=3,workQueue容量為8;
最開始,執(zhí)行的任務(wù)A,B,此時corePoolSize已用完,再次執(zhí)行任務(wù)C,則C將被放入緩沖隊列workQueue中等待著,如果后來又添加了7個任務(wù),此時workQueue已滿,則后面再來的任務(wù)的數(shù)量是5將會和maximumPoolSize比較,由于maximumPoolSize為3,所以只能容納1個了,因為包含corePollSize個數(shù),所以后面來的任務(wù)默認都會被拒絕4個。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
android開發(fā)之蜂鳴提示音和震動提示的實現(xiàn)原理與參考代碼
蜂鳴提示音和震動提示此功能在手機使用中很實用,最近在讀zxing項目,學到了不少東西;我們一起來看看他是怎么做的,感興趣的朋友可以了解下哦2013-01-01
Android LayoutTransiton實現(xiàn)簡單的錄制按鈕
這篇文章主要介紹了Android LayoutTransiton實現(xiàn)簡單的錄制按鈕,主要實現(xiàn)開始,暫停,停止和顯示錄制時間長度,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
Android帶清除功能的輸入框控件EditTextWithDel
這篇文章主要為大家詳細介紹了Android帶清除功能的輸入框控件EditTextWithDel,感興趣的小伙伴們可以參考一下2016-09-09
Android使用AlertDialog創(chuàng)建對話框
這篇文章主要為大家詳細介紹了Android使用AlertDialog創(chuàng)建對話框的方法料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12

