線程池優(yōu)勢(shì)
- 避免頻繁創(chuàng)建與銷毀
- 復(fù)用線程
- 方便線程并發(fā)管控
- 延時(shí)定時(shí)線程池
線程池的主要參數(shù)
- corePoolSize:核心線程數(shù)琴昆,優(yōu)點(diǎn)1言缤、2泼疑,低于核心數(shù)先創(chuàng)建線程,都算有空閑線程
- maximumPoolSize:最大并發(fā)數(shù)量
- keepAliveTime:線程笔嗯猓活時(shí)間,可用于核心與非核心
- workQueue :執(zhí)行任務(wù)的等待隊(duì)列
- threadFactory:用于創(chuàng)建線程
- handler:當(dāng)maximumPoolSize和workQueue滿了執(zhí)行的策略
添加任務(wù)到線程池時(shí)候拥知,首先要滿足corePoolSize數(shù)量踏拜,都算有空閑線程也要?jiǎng)?chuàng)建線程。當(dāng)corePoolSize已滿時(shí)候低剔,我們會(huì)把線程添加到workQueue隊(duì)列中速梗,在隊(duì)列滿了時(shí),在maximumPoolSize是否還可以執(zhí)行非核心線程然后添加襟齿,可能導(dǎo)致后來(lái)的線程先執(zhí)行姻锁。
配置線程池
- CPU密集型任務(wù):CPU核心數(shù)+1。CPU使用率高猜欺,過(guò)多線程造成切換過(guò)度
- IO密集型任務(wù):0 位隶,最大線程數(shù)(參照okhttp)。CPU利用率不高开皿,線程越多能充分利用CPU