并发编程之并发队列

常见的并发队列有2种:阻塞队列和非阻塞队列。阻塞队列使用锁实现,非阻塞队列使用CAS非阻塞算法实现。这2种队列都是线程安全的。


常见的阻塞队列有:LinkedBlockingQueue、ArrayBlockingQueue、PriorityBlockingQueue、SynchronousQueue


接下来我们分析一下阻塞队列的实现原理。阻塞队列是用锁来实现的,可以用一把锁,也就是入队和出队用同一把锁,也可以用两把锁,入队和出队用不同的锁。


常见的非阻塞队列有:ConcurrentLinkedQueue


非阻塞队列的实现原理可以参考之前的一篇文章,关键点就是CAS无锁算法和volatile关键字。ConcurrentLinkedQueue的数据结构是内部类中定义的Node,里面有2个变量:

volatile E item;

volatile Node<E> next;

对node的操作都是基于Unsafe类的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。