ArrayBlockingQueue 和 LinkedBlockingQueue 之间的区别
javaobject oriented programmingprogramming
Blocking 队列接口是 Java.util.concurrent 包的一部分。Blocking 队列是专为生产者消费者队列设计的,也支持收集。此接口分为四个部分的方法,以支持可以在队列上执行的所有类型的操作。它不接受空键。ArrayBlockingQueue 和 LinkedBlockingQueue 都实现了 Blocking 队列接口
ArrayBlockingQueue 和 LinkedBlockingQueue 都按 FIFO 顺序存储元素。在这两个队列中,元素的插入总是发生在队列的尾部,元素的删除总是发生在队列的头部。
Sr.不。 | 关键 | ArrayBlockingQueue | LinkedBlockingQueue |
---|---|---|---|
1 | Basic | 它由数组支持 | 它由链表支持 |
2 | Bounded | 它是有界数组队列。因此一旦创建,容量就无法改变 | 它是无界队列 |
3. | 吞吐量 | 它的吞吐量低于链接队列 | 链接队列比基于数组的队列具有更高的吞吐量 |
4. | 锁定 | 它使用单锁双条件算法 | 它具有用于在队列中插入元素的 putLock 和用于从队列中删除元素的 takeLock |