小编use*_*577的帖子

ArrayBlockingQueue使用单个锁进行插入和删除,但LinkedBlockingQueue使用2个单独的锁

我正在浏览ArrayBlockingQueue和LinkedBlockingQueue的源代码.LinkedBlockingQueue有一个putLock和一个takeLock分别用于插入和删除,但ArrayBlockingQueue只使用1个锁.我相信LinkedBlockingQueue是基于简单,快速,实用的非阻塞和阻塞并发队列算法中描述的设计实现的.在本文中,他们提到他们保留一个虚拟节点,以便入队者永远不必访问头部,并且出队员永远不必访问尾部,这避免了死锁情况.我想知道为什么ArrayBlockingQueue没有借用相同的想法而是使用2个锁.

java concurrency blockingqueue

9
推荐指数
2
解决办法
3595
查看次数

标签 统计

blockingqueue ×1

concurrency ×1

java ×1