1. 程式人生 > >常見4中執行緒池

常見4中執行緒池

執行緒池能有效的處理多個執行緒的併發問題,避免大量的執行緒因為互相強佔系統資源導致阻塞現象,能夠有效的降低頻繁建立和銷燬執行緒對效能所帶來的開銷。真正執行緒池的實現是通過ThreadPoolExecutor,ThreadPoolExecutor通過配置不同的引數配置來建立執行緒池。下面簡單的介紹一下各個執行緒池的區別和用處。

(1)fixThreadPool  正規執行緒

          我的理解這是一個有指定的執行緒數的執行緒池,有核心的執行緒,裡面有固定的執行緒數量,響應的速度快。正規的併發執行緒,多用於伺服器。固定的執行緒數由系統資源設定。


public static ExecutorService newFixedThreadPool(int threads)
{
return newFixedThreadPool(threads,threads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
}
核心執行緒是沒有超時機制的,佇列大小沒有限制,除非執行緒池關閉了核心執行緒才會被回收。
(2)caCheThreadPool  快取執行緒池

         只有非核心執行緒,最大執行緒數很大(Int.Max(values)),它會為每一個任務新增一個新的執行緒,這邊有一個超時機制,當空閒的執行緒超過60s內沒有用到的話,就會被回收。缺點就是沒有考慮到系統的實際記憶體大小。


public static ExecutorService newCachedThreadPool(int threads)
{
return newFixedThreadPool(threads,Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>());
}
(3)singleThreadPoll   單執行緒執行緒池

  看這個名字就知道這個傢伙是隻有一個核心執行緒,就是一個孤家寡人,通過指定的順序將任務一個個丟到執行緒,都乖乖的排隊等待執行,不處理併發的操作,不會被回收。確定就是一個人幹活效率慢。

(4)ScheduledThreadPoll   

         這個執行緒池就厲害了,是唯一一個有延遲執行和週期重複執行的執行緒池。它的核心執行緒池固定,非核心執行緒的數量沒有限制,但是閒置時會立即會被回收
---------------------
作者:觀眼看世界
來源:CSDN
原文:https://blog.csdn.net/qq_34952110/article/details/78086085
版權宣告:本文為博主原創文章,轉載請附上博文連結!