BlockingQueue 接口
- BlockingQueue 接口
- ArrayBlockingQueue
- LinkedBolckingQueue
- SynchronousQueue
- PriorityBlockingQueue
- DelayQueue
ArrayBlockingQueue
Array**Blocking**Queue 是基于數組的阻塞隊列實作,在 ArrayBlockingQueue 内部,維護一個定長數組,以便緩存隊列中的資料對象,内部沒有實作讀寫分離,也就意味着生産者和消費者不能完全并行,長度是需要定義的,可以指定先進先出,或者先進後出,也叫有界隊列
LinkedBolckingQueue
Linked**Bolcking**Queue 基于連結清單實作的阻塞隊列,和 ArrayBlockingQueue 差不多,内部也維持着一個資料緩沖隊列(該隊列由連結清單構成),LinkedBolckingQueue 之是以能高效的處理并發資料,是因為其内部采用分離鎖(讀寫分離兩個鎖),進而實作生産者和消費者操作的完全并行。它是一個無界隊列
SynchronousQueue
SynchronousQueue, 是一個沒有緩沖的隊列,生産者産生的資料直接會被消費者擷取并且消費
PriorityBlockingQueue
PriorityBlockingQueue, 基于優先級的阻塞隊列(優先級的判斷通過構造函數的Compator對象決定,也就是說傳入隊列的對象必須實作Comparable接口),内部控制線程同步的鎖采用的是公平鎖,它也是一個無界隊列
DelayQueue:
DelayQueue,帶有延遲時間的 Queue, 其中的元素隻有當其指定的延遲時間到了,才能從隊列中擷取到該元素,DelayQueue 中的元素必須實作 Delayed接口,DelayQueue是一個沒有大小限制的隊列,應用場景有很多,比如對緩存逾時的資料進行移除,任務逾時處理,空閑連接配接的關閉。