Android中的線程池

線程池的優(yōu)點

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


線程池
ThreadPoolExecutor

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

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

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

線程池的分類

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

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

相關閱讀更多精彩內容

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

友情鏈接更多精彩內容