1、newCachedThreadPool
作用:創(chuàng)建一個可根據(jù)需要創(chuàng)建新線程的線程池,但是在以前構(gòu)造的線程可用時將重用它們,并在需要時使用提供的 ThreadFactory 創(chuàng)建新線程。
特征:
(1)線程池中數(shù)量沒有固定,可達(dá)到最大值(Interger. MAX_VALUE)
(2)線程池中的線程可進(jìn)行緩存重復(fù)利用和回收(回收默認(rèn)時間為1分鐘)
(3)當(dāng)線程池中,沒有可用線程,會重新創(chuàng)建一個線程
創(chuàng)建方式: Executors.newCachedThreadPool();
2、newFixedThreadPool
作用:創(chuàng)建一個可重用固定線程數(shù)的線程池,以共享的無界隊(duì)列方式來運(yùn)行這些線程。在任意點(diǎn),在大多數(shù) nThreads 線程會處于處理任務(wù)的活動狀態(tài)。如果在所有線程處于活動狀態(tài)時提交附加任務(wù),則在有可用線程之前,附加任務(wù)將在隊(duì)列中等待。如果在關(guān)閉前的執(zhí)行期間由于失敗而導(dǎo)致任何線程終止,那么一個新線程將代替它執(zhí)行后續(xù)的任務(wù)(如果需要)。在某個線程被顯式地關(guān)閉之前,池中的線程將一直存在。
特征:
(1)線程池中的線程處于一定的量,可以很好的控制線程的并發(fā)量
(2)線程可以重復(fù)被使用,在顯示關(guān)閉之前,都將一直存在
(3)超出一定量的線程被提交時候需在隊(duì)列中等待
創(chuàng)建方式:
(1)Executors.newFixedThreadPool(int nThreads);//nThreads為線程的數(shù)量
(2)Executors.newFixedThreadPool(int nThreads,ThreadFactory threadFactory);//nThreads為線程的數(shù)量,threadFactory創(chuàng)建線程的工廠方式
3、newSingleThreadExecutor
作用:創(chuàng)建一個使用單個 worker 線程的 Executor,以無界隊(duì)列方式來運(yùn)行該線程。(注意,如果因?yàn)樵陉P(guān)閉前的執(zhí)行期間出現(xiàn)失敗而終止了此單個線程,那么如果需要,一個新線程將代替它執(zhí)行后續(xù)的任務(wù))。可保證順序地執(zhí)行各個任務(wù),并且在任意給定的時間不會有多個線程是活動的。與其他等效的 newFixedThreadPool(1) 不同,可保證無需重新配置此方法所返回的執(zhí)行程序即可使用其他的線程。
特征:
(1)線程池中最多執(zhí)行1個線程,之后提交的線程活動將會排在隊(duì)列中以此執(zhí)行
創(chuàng)建方式:
(1)Executors.newSingleThreadExecutor() ;
(2)Executors.newSingleThreadExecutor(ThreadFactory threadFactory);// threadFactory創(chuàng)建線程的工廠方式
4、newScheduleThreadPool
作用: 創(chuàng)建一個線程池,它可安排在給定延遲后運(yùn)行命令或者定期地執(zhí)行。
特征:
(1)線程池中具有指定數(shù)量的線程,即便是空線程也將保留
(2)可定時或者延遲執(zhí)行線程活動
創(chuàng)建方式:
(1)Executors.newScheduledThreadPool(int corePoolSize);// corePoolSize線程的個數(shù)
(2)newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory);// corePoolSize線程的個數(shù),threadFactory創(chuàng)建線程的工廠
5、newSingleThreadScheduledExecutor
作用: 創(chuàng)建一個單線程執(zhí)行程序,它可安排在給定延遲后運(yùn)行命令或者定期地執(zhí)行。
特征:
(1)線程池中最多執(zhí)行1個線程,之后提交的線程活動將會排在隊(duì)列中以此執(zhí)行
(2)可定時或者延遲執(zhí)行線程活動
創(chuàng)建方式:
(1)Executors.newSingleThreadScheduledExecutor() ;
(2)Executors.newSingleThreadScheduledExecutor(ThreadFactory threadFactory) ;//threadFactory創(chuàng)建線程的工廠