線程池的工作隊列


1、線程池的幾種工作隊列?

  • ArrayBlockingQueue
  • LinkedBlockingQueue
  • DelayQueue
  • PriorityBlockingQueue
  • SynchronousQueue

(1)ArrayBlockingQueue

ArrayBlockingQueue(有界隊列)是一個用數組實現的有界阻塞隊列,按FIFO排序量。

(2)LinkedBlockingQueue

LinkedBlockingQueue(可設置容量隊列)基於鏈表結構的阻塞隊列,按FIFO排序任務,容量可以選擇進行設置,不設置的話,將是一個無邊界的阻塞隊列,最大長度為Integer.MAX_VALUE,吞吐量通常要高於ArrayBlockingQuene;

newFixedThreadPool線程池使用了這個隊列。

(3)DelayQueue

DelayQueue(延遲隊列)是一個任務定時周期的延遲執行的隊列。根據指定的執行時間從小到大排序,否則根據插入到隊列的先后排序。

newScheduledThreadPool線程池使用了這個隊列。

(4)PriorityBlockingQueue

PriorityBlockingQueue(優先級隊列)是具有優先級的無界阻塞隊列;

(5)SynchronousQueue

SynchronousQueue(同步隊列)一個不存儲元素的阻塞隊列,每個插入操作必須等到另一個線程調用移除操作,否則插入操作一直處於阻塞狀態,吞吐量通常要高於LinkedBlockingQuene

newCachedThreadPool線程池使用了這個隊列。

說出它們的特點,並結合使用到對應隊列的常用線程池(如newFixedThreadPool線程池使用LinkedBlockingQueue),進行展開闡述。

 

補充:java並發包

  •   ArrayBlockingQueue:一個由數組結構組成的有界阻塞隊列。 
  •   LinkedBlockingQueue:一個由鏈表結構組成的有界阻塞隊列。 
  •   PriorityBlockingQueue:一個支持優先級排序的無界阻塞隊列。 
  •   DealyQueue:一個使用優先級隊列實現的無界阻塞隊列。 
  •   SynchronousQueue:一個不存儲元素的阻塞隊列。 
  •   LinkedTransferQueue:一個由鏈表結構組成的無界阻塞隊列。 
  •   LinkedBlockingDeque:一個由鏈表結構組成的雙向阻塞隊列。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM