ArrayBlockingQueue 和 LinkedBlockingQueue 的區別
阻塞佇列介面是 Java.util.concurrent 包的一部分。阻塞佇列專門用於生產者消費者佇列,還支援集合。該介面分為四部分方法,以支援可以在佇列上執行的所有型別操作。它不接受 null 鍵。ArrayBlockingQueue 和 LinkedBlockingQueue 都實現了阻塞佇列介面
ArrayBlockingQueue 和 LinkedBlockingQueue 都按照 FIFO 順序儲存元素。在這兩個佇列中,元素插入始終發生在佇列的尾部,而元素移除始終發生在佇列的頭。
序號 | 要點 | ArrayBlockingQueue | LinkedBlockingQueue |
---|---|---|---|
1 | 基礎 | 它由陣列支援 | 它由連結串列支援 |
2 | 有界 | 它是有界陣列佇列。因此,一旦建立,容量就不能更改 | 它是無界佇列 |
3 | 吞吐量 | 它的吞吐量低於連結佇列佇列 | 連結佇列的吞吐量高於基於陣列的佇列 |
4. | 鎖 | 它使用單鎖雙條件演算法 | 它有用於將元素插入佇列的 putLock 和用於從佇列中移除元素的 takeLock |
廣告