UNIX(多线程):22---几种常见的线程池
常見線程池
1、newSingleThreadExecutor
創(chuàng)建一個單線程化的線程池,它只會用唯一的工作線程來執(zhí)行任務(wù),保證所有任務(wù)按照指定順序(FIFO, LIFO, 優(yōu)先級)執(zhí)行。
從構(gòu)造方法來看,它可以單獨執(zhí)行,也可以與周期線程池結(jié)合用。其任務(wù)隊列是LinkedBlockingQueue,這是個無界的阻塞隊列,因為線程池里只有一個線程,就確保所有的任務(wù)都在同一個線程中順序執(zhí)行,這樣就不需要處理線程同步的問題。這類線程池適用于多個任務(wù)順序執(zhí)行的場景。
2、newFixedThreadPool
創(chuàng)建一個定長線程池,可控制線程最大并發(fā)數(shù),超出的線程會在隊列中等待。
一個固定大小的線程池,可以用于已知并發(fā)壓力的情況下,對線程數(shù)做限制。
這類線程池的特點就是里面全是核心線程,沒有非核心線程,也沒有超時機制,任務(wù)大小也是沒有限制的,數(shù)量固定,即使是空閑狀態(tài),線程不會被回收,除非線程池被關(guān)閉,從構(gòu)造方法也可以看出來,只有兩個參數(shù),一個是指定的核心線程數(shù),一個是線程工廠,keepAliveTime無效。任務(wù)隊列采用了無界的阻塞隊列LinkedBlockingQueue,執(zhí)行execute方法的時候,運行的線程沒有達到corePoolSize就創(chuàng)建核心線程執(zhí)行任務(wù),否則就阻塞在任務(wù)隊列中,有空閑線程的時候去取任務(wù)執(zhí)行。由于該線程池線程數(shù)固定,且不被回收,線程與線程池的生命周期同步,所以適用于任務(wù)量比較固定但耗時長的任務(wù)。
3、newCache
總結(jié)
以上是生活随笔為你收集整理的UNIX(多线程):22---几种常见的线程池的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++(22)--继承和派生
- 下一篇: (三)nodejs循序渐进-值传递和引用