并发编程之并发队列

2019-04-30  本文已影响0人  鸿雁长飞鱼龙潜跃

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

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

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

常见的非阻塞队列有:ConcurrentLinkedQueue

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

volatile E item;

volatile Node<E> next;

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

上一篇 下一篇

猜你喜欢

热点阅读