第 5-3 课:线程池——Executors + 面试题
生活随笔
收集整理的這篇文章主要介紹了
第 5-3 课:线程池——Executors + 面试题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
線程池的創(chuàng)建分為兩種方式:ThreadPoolExecutor 和 Executors,上一節(jié)學(xué)習(xí)了 ThreadPoolExecutor 的使用方式,本節(jié)重點(diǎn)來(lái)看 Executors 是如何創(chuàng)建線程池的。
Executors 可以創(chuàng)建以下六種線程池。
- FixedThreadPool(n):創(chuàng)建一個(gè)數(shù)量固定的線程池,超出的任務(wù)會(huì)在隊(duì)列中等待空閑的線程,可用于控制程序的最大并發(fā)數(shù)。
- CachedThreadPool():短時(shí)間內(nèi)處理大量工作的線程池,會(huì)根據(jù)任務(wù)數(shù)量產(chǎn)生對(duì)應(yīng)的線程,并試圖緩存線程以便重復(fù)使用,如果限制 60 秒沒(méi)被使用,則會(huì)被移除緩存。
- SingleThreadExecutor():創(chuàng)建一個(gè)單線程線程池。
- ScheduledThreadPool(n):創(chuàng)建一個(gè)數(shù)量固定的線程池,支持執(zhí)行定時(shí)性或周期性任務(wù)。
- SingleThreadScheduledExecutor():此線程池就是單線程的 newScheduledThreadPool。
- WorkStealingPool(n):Java 8 新增創(chuàng)建線程池的方法,創(chuàng)建時(shí)如果不設(shè)置任何參數(shù),則以當(dāng)前機(jī)器處理器個(gè)數(shù)作為線程個(gè)數(shù),此線程池會(huì)并行處理任務(wù),不能保證執(zhí)行順序。
下面分別來(lái)看以上六種線程池的具體代碼使用。
FixedThreadPool 使用
創(chuàng)建固定個(gè)數(shù)的線程池,具體示例如下:
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(2); for (int i = 0; i < 3; i++) {fixedThreadPool.execute(() -> {總結(jié)
以上是生活随笔為你收集整理的第 5-3 课:线程池——Executors + 面试题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 结语|日拱一卒无有尽,功不唐捐终入海
- 下一篇: 第 1-7 课:数组和排序算法 + 面试