Executors框架——5种常用的线程池介绍及区别
1. CachedThreadPool線程池(可向下轉(zhuǎn)型為ThreadPoolExecutor)
1.1 線程池核心線程數(shù)是0,說(shuō)明線程空閑時(shí),會(huì)被自動(dòng)回收。
1.2 任務(wù)隊(duì)列只能有一個(gè)任務(wù),而且最大線程數(shù)是整數(shù)最大值。所以有任務(wù)就會(huì)創(chuàng)建線程處理,這就要求任務(wù)執(zhí)行時(shí)間要短,不然會(huì)創(chuàng)建很多線程
?
2. FixedThreadPool線程池(可向下轉(zhuǎn)型為ThreadPoolExecutor)
2.1 核心線程數(shù)和最大線程數(shù)相等,不存在線程回收
?
3. SingleThreadExecutor線程池
3.1 只能創(chuàng)建一個(gè)線程的SingleThreadExecutor線程池和線程的區(qū)別
3.2 線程池中唯一的線程發(fā)生異常結(jié)束,線程池會(huì)再創(chuàng)建一個(gè)線程
?
4. WorkStealingPool線程池(可向下轉(zhuǎn)型為ForkJoinPool)
4.1 本質(zhì)是ForkJoinPool
4.2 最大的特點(diǎn)之一:線程可以懸掛當(dāng)前任務(wù),從任務(wù)隊(duì)列執(zhí)行子任務(wù)
4.3 最大的特點(diǎn)之二:從自己隊(duì)列按LIFO后入先出方式拿取任務(wù),然后會(huì)從其它線程的工作隊(duì)列按FIFO先入先出方式"竊取"任務(wù)
?
5. ScheduleThreadPoolExecutor線程池
5.1 任務(wù)執(zhí)行時(shí)間很長(zhǎng)時(shí),不能保證周期性執(zhí)行
5.2 不支持回調(diào)
?
總結(jié)
以上是生活随笔為你收集整理的Executors框架——5种常用的线程池介绍及区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ThreadPoolExecutor线程
- 下一篇: 设计模式之Future模式——提交任务后