Android中的線程池

線程池的優(yōu)點

1.重用線程池中的線程,避免線程的創(chuàng)建和銷毀所帶來的性能開銷。
2.控制線程池的最大并發(fā)數(shù),避免大量的線程之間因相互搶占系統(tǒng)資源導(dǎo)致的阻塞現(xiàn)象。
3.能夠?qū)€程進行簡單的管理,并提供定時執(zhí)行以及指定間隔循環(huán)執(zhí)行等功能。


線程池
ThreadPoolExecutor

線程池的真正實現(xiàn),它的構(gòu)造方法提供了一系列參數(shù)來配置線程池。

corePoolSize:核心線程數(shù)(CPU核心數(shù)+1)
maximumPoolSize:最大線程數(shù)(CUP核心數(shù)×2+1)
keepAliveTime:非核心線程閑置的超時時長(1秒)
unit:指定keepAliveTime的時間單位
workQueue:線程池中的任務(wù)隊列(容量128)
threadFactory:線程工廠,為線程池提供創(chuàng)建新線程的功能。

ThreadPoolExecutor執(zhí)行規(guī)則
1.如果線程池中的線程數(shù)量未達到核心線程數(shù)量,會直接啟動一個核心線程執(zhí)行任務(wù)。
2.如果線程池中的線程數(shù)量已經(jīng)達到或者超過核心線程數(shù)量,那么任務(wù)會被插入到任務(wù)隊列中排隊等待執(zhí)行。
3.如果無法插入到任務(wù)隊列中,往往是由于任務(wù)隊列已滿,這時候如果線程數(shù)量未達到線程池規(guī)定的最大值,則立刻啟動一個非核心線程來執(zhí)行任務(wù)。
4.如果線程數(shù)量已經(jīng)達到線程池規(guī)定的最大值,那么就拒絕執(zhí)行此任務(wù),ThreadPoolExecutor會調(diào)用RejectedExecutionHandler的rejectedExecution方法通知調(diào)用者。

線程池的分類

FixedThreadPool
只有核心線程、線程數(shù)量固定、沒有超時機制、空閑狀態(tài)也不會被回收、任務(wù)隊列也沒有大小限制
CachedThreadPool
只有核心線程、線程數(shù)量不定、有超時機制、60秒閑置線程回收、最大線程數(shù)是Integer.MAX_VALUE
ScheduledThreadPool
核心線程固定、非核心線程Integer.MAX_VALUE、非核心線程閑置立即被回收
SingleThreadExecutor
只有一個核心線程、所有任務(wù)都在同一線程中按順序執(zhí)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 線程池的優(yōu)點: 重用線程池中的線程,避免因為線程的創(chuàng)建和銷毀帶來的性能消耗 能有效的控制線程的最大并發(fā)數(shù),避免大量...
    乆丩乣閱讀 5,502評論 5 30
  • Android中的線程池 線程池的優(yōu)點: 重用線程池的線程,避免因為線程的創(chuàng)建和銷毀所帶來的性能開銷; 能有效的控...
    hhws閱讀 311評論 1 0
  • 很久沒有更新了,首先跟各位說聲對不起。近段時間陷進了失眠的深淵難以自拔,工作、生活一團糟,每天都是滿滿的負能量,學(xué)...
    山野紙鶴閱讀 1,532評論 0 9
  • 走出新媒體辦公室的那一刻,我的眼淚差點就要掉下來。 ...
    琉夏三月閱讀 251評論 0 1
  • PART 1 伯凡 1. 認知=自己內(nèi)化的認知體系+現(xiàn)有現(xiàn)象和事實。知識體系內(nèi)化,也會帶來對現(xiàn)有現(xiàn)象和事實的脫敏。...
    尹仲會閱讀 767評論 0 0

友情鏈接更多精彩內(nèi)容