Interface Blocking queue thuộc package Java.util.concurrent. Blocking queue thiết kế đặc biệt cho queue producer-consumer và cũng hỗ trợ collection. Interface này chia thành 4 phần phương thức hỗ trợ mọi loại thao tác trên queue. Không chấp nhận null keys. Cả ArrayBlockingQueue và LinkedBlockingQueue đều triển khai Blocking queue interface.
Cả hai đều lưu trữ phần tử theo thứ tự FIFO. Trong cả hai queue, chèn phần tử luôn ở đuôi, xóa phần tử luôn ở đầu.
| STT | Tiêu chí | ArrayBlockingQueue | LinkedBlockingQueue |
|---|---|---|---|
| 1 | Cấu trúc dữ liệu | Dựa trên Array (mảng) | Dựa trên Linked list (danh sách liên kết) |
| 2 | Giới hạn dung lượng | Bounded array queue. Một lần tạo, dung lượng không đổi | Unbounded queue (không giới hạn) |
| 3 | Throughput (thông lượng) | Thấp hơn Linked queues | Cao hơn array-based queues |
| 4 | Cơ chế Lock | Single-lock double condition algorithm | putLock cho chèn, takeLock cho xóa |