ArrayBlockingQueue与LinkedBlockingQueue对比
Posted 北城cheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArrayBlockingQueue与LinkedBlockingQueue对比相关的知识,希望对你有一定的参考价值。
队列中锁的实现不同
ArrayBlockingQueue实现的队列中的锁是没有分离的,即生产和消费用的是同一个锁;
LinkedBlockingQueue实现的队列中的锁是分离的,即生产用的是putLock,消费是takeLock
因此,LinkedBlockingQueue的一大优点也是ArrayBlockingQueue所不具备的,就是在多个CPU的情况下,LinkedBlockingQueue可以做到同一时刻既消费、又生产。
在生产或消费时操作不同
ArrayBlockingQueue实现的队列中在生产和消费的时候,是直接将枚举对象插入或移除的;
LinkedBlockingQueue实现的队列中在生产和消费的时候,需要把枚举对象转换为Node进行插入或移除,会影响性能。
队列大小初始化方式不同
ArrayBlockingQueue实现的队列中必须指定队列的大小;
LinkedBlockingQueue实现的队列中可以不指定队列的大小,但是默认是Integer.MAX_VALUE*/,可以当做无界。
以上是关于ArrayBlockingQueue与LinkedBlockingQueue对比的主要内容,如果未能解决你的问题,请参考以下文章
LinkedBlockingQueue与ArrayBlockingQueue
java并发之阻塞队列LinkedBlockingQueue与ArrayBlockingQueue
深入剖析java并发之阻塞队列LinkedBlockingQueue与ArrayBlockingQueue