線程池就是存儲線程的一個池子作媚,為了避免頻繁地創(chuàng)建架馋、刪除線程而設(shè),因為線程是操作系統(tǒng)中稀缺的資源走芋,頻繁創(chuàng)建和刪除會帶來增加資源消耗绩郎、降低響應(yīng)速度等影響。
線程池實現(xiàn)原理
ThreadPoolExecutor執(zhí)行execute()方法的示意圖如下:
當(dāng)調(diào)用excute()方法時翁逞,線程池會做以下判斷:
1肋杖,如果當(dāng)前正在執(zhí)行的線程數(shù)量少于corePoolSize,則該線程馬上被執(zhí)行
2挖函,如果當(dāng)前正在執(zhí)行的線程數(shù)量大于或等于corePoolSize状植,則該線程池將添加到等待隊列
3,當(dāng)?shù)却嘘牆M了怨喘,而且當(dāng)前正在執(zhí)行的線程數(shù)量少于maximunPoolSize津畸,則創(chuàng)建新的線程
4,當(dāng)?shù)却嘘牆M了必怜,而且當(dāng)前正在執(zhí)行的線程數(shù)量大于或等于maximunPoolSize肉拓,那么線程池就會拋出RejectedExecutionException異常,表示不能再接受新的任務(wù)了