技术分类

ArrayBlockingQueue和LinkedBlockingQueue的区别

阻塞队列接口是Java.util.concurrent包的一部分。阻塞队列是专门为生产者使用者队列设计的,还支持收集。该接口分为方法的四个部分,以支持可以在队列上执行的所有类型的操作。它不接受空键。ArrayBlockingQueue和LinkedBlockingQueue都实现了Blocking队列接口

ArrayBlockingQueue和LinkedBlockingQueue都以FIFO顺序存储元素。在两个队列中,元素的插入总是发生在队列的尾部,元素的去除总是从队列的开头发生。  

序号 ArrayBlockingQueue LinkedBlockingQueue
1 基本特征 它由数组支持 它由链式列表支持
2 是否自动扩容 它是有界数组队列。因此,一旦创建,容量将无法更改 它是无限队列
3 吞吐量 它的吞吐量比链式队列低 链式队列比基于阵列的队列具有更高的吞吐量
4 它使用单锁双条件算法 它具有putLock用于在队列中插入元素,以及takeLock用于从队列中删除元素