簡介
當(dāng)調(diào)度器調(diào)度線程池執(zhí)行任務(wù)時,生產(chǎn)者生產(chǎn)任務(wù),消費者消費任務(wù),那么這時就需要一個任務(wù)隊列,生產(chǎn)者向隊列里插入任務(wù),消費者從隊列里提取任務(wù)執(zhí)行。調(diào)度器里就是通過BlockingQueue實現(xiàn)的隊列。
狀態(tài)
BlockingQueue最終會有四種狀況,拋出異常、返回特殊值、阻塞、超時

實現(xiàn)類
?BlockingQueue是個接口,有如下實現(xiàn)類:
ArrayBlockQueue:1.由數(shù)組支持的有界阻塞隊列;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.此隊列按 FIFO(先進先出)原則對元素進行排序;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.創(chuàng)建其對象必須明確大小,像數(shù)組一樣;
LinkedBlockQueue:1.可改變大小的阻塞隊列;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.FIFO先進先出;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.創(chuàng)建其對象如果沒有明確大小,默認值是Integer.MAX_VALUE
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4.鏈接隊列的吞吐量通常要高于基于數(shù)組的隊列,但是在大多數(shù)并發(fā)應(yīng)用程序中,其可預(yù)知的性能要低;
PriorityBlockingQueue:1.類似于LinkedBlockingQueue
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.但其所含對象的排序不是FIFO,而是依據(jù)對象的自然排序順序或者是構(gòu)造函數(shù)所帶的Comparator決定的順序;
SynchronousQueue:1.同步隊列;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.同步隊列沒有任何容量,每個插入必須等待另一個線程移除,反之亦然;