定義:在程序啟動的時候就創(chuàng)建若干線程來響應(yīng)處理扼褪,它們被稱為線程池,里面的線程就工作線程
作用:
1降低資源消耗:通過重復(fù)利用創(chuàng)建的線程降低創(chuàng)建和銷毀線程造成的消耗
2 提高響應(yīng)速度:任務(wù)到達(dá)直接使用
3 提高線程的可管理性
如何合理設(shè)置線程池大型φ:
根據(jù)以下四個原則:
任務(wù)的性質(zhì):cpu密集型,I/O密集型,混合型
任務(wù)的優(yōu)先級:高中低
任務(wù)的執(zhí)行時間:長短
任務(wù)的依賴:是否依賴其他的系統(tǒng)資源
最佳線程數(shù)目=((線程等待時間+線程cpu時間)/線程cpu時間)*cpu數(shù)目
四中常見的線程池
可緩存線程池:CacheThreadPool,線程數(shù)無限制挽拔,可以復(fù)用或者新建
定長線程池:FixedThreadPool,更快響應(yīng)外界請求但校,線程處于空閑時核心線程不會被回收
定時線程池:ScheduledThreadPool螃诅,定時周期性任務(wù)執(zhí)行,比如集群監(jiān)控
單線程化的線程池:SingleThreadExecutor状囱,有且只有一個工作線程執(zhí)行任務(wù)术裸,任務(wù)按順序執(zhí)行
線程池有哪幾個參數(shù)?
ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
corePoolSize:池中保留的核心線程數(shù)
maximumPoolSize:允許的最大線程數(shù)
keepAliveTime:當(dāng)線程數(shù)大于核心線程時,閑置線程存活時間
unit:keepAliveTime參數(shù)的時間單位
workQueue:在執(zhí)行任務(wù)之前用于保存任務(wù)的隊(duì)列亭枷。 此隊(duì)列將僅保存execute方法提交的Runnable任務(wù)袭艺。
threadFactory:執(zhí)行程序創(chuàng)建新線程時使用的工廠
handler: 由于達(dá)到線程邊界和隊(duì)列容量而阻止執(zhí)行時使用的處理程序