LinkedBlockingQueue与ArrayBlockingQueue的区别
1、LinkedBlockingQueue
使用链表实现,ArrayBlockingQueue
使用环形数组实现
2、LinkedBlockingQueue
使用两个重入锁,用于入队和出队(头尾两个)。头部的节点必定为null
。ArrayBlockingQueue
只有一个锁用于出队与入队。
3、LinkedBlockingQueue
两个锁都是非公平锁。ArrayBlockingQueue
默认是非公平锁,构造函数可以指定为公平锁。
4、队列计数方式不一样:ArrayBlockingQueue只需要一个int
记录。LinkedBlockingQueue使用AtomicInteger
计算(读写可以同时进行,因此可以同时计数)。
5、ArrayBlockingQueue
使用数组,因此可以访问和删除给定位置的元素。
以上是 LinkedBlockingQueue与ArrayBlockingQueue的区别 的全部内容, 来源链接: utcz.com/z/514698.html