轉自:http://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MzA5MzI3NjE2MA==#wechat_webview_type=1&wechat_redirect
為什么會有線程池
** 1. 創(chuàng)建/銷毀線程伴隨著系統(tǒng)開銷,過于頻繁的創(chuàng)建/銷毀線程豁辉,會很大程度上影響處理效率芒帕,例如:**
記創(chuàng)建線程消耗時間 T1测萎,執(zhí)行任務消耗時間 T2拳魁,銷毀線程消耗時間 T3
如果 T1+T3>T2蔑穴,那么是不是說開啟一個線程來執(zhí)行這個任務太不劃算了伐蒂!
正好褪子,線程池緩存線程,可用已有的閑置線程來執(zhí)行新任務艺智,避免了 T1+T3 帶來的系統(tǒng)開銷
2. 線程并發(fā)數(shù)量過多倘要,搶占系統(tǒng)資源從而導致阻塞
我們知道線程能共享系統(tǒng)資源,如果同時執(zhí)行的線程過多,就有可能導致系統(tǒng)資源不足而產生阻塞的情況
運用線程池能有效的控制線程最大并發(fā)數(shù)封拧,避免以上的問題
3. 對線程進行一些簡單的管理
比如:延時執(zhí)行志鹃、定時循環(huán)執(zhí)行的策略等
運用線程池都能進行很好的實現(xiàn)
如何使用線程池###
抽象類Executor
實現(xiàn)類ThreadPoolExecutor
對線程池的配置,就是對 ThreadPoolExecutor 構造函數(shù)的參數(shù)的配置泽西,既然這些參數(shù)這么重要曹铃,就來看看構造函數(shù)的各個參數(shù)吧
常用5個,其他2個不常用
- int corePoolSize => 該線程池中核心線程數(shù)最大值