美文网首页
并发编程之并发队列

并发编程之并发队列

作者: 鸿雁长飞鱼龙潜跃 | 来源:发表于2019-04-30 13:00 被阅读0次

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

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

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

常见的非阻塞队列有:ConcurrentLinkedQueue

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

volatile E item;

volatile Node<E> next;

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

相关文章

  • 并发编程之并发队列

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

  • iOS GCD笔记

    串行队列 并发队列 主队列 全局并发队列 同步执行 异步执行 同步+并发队列 = 没有开启新线程,串行执行任务 s...

  • iOS 的串行队列和并发队列中的任务是如何执行的

    我们都知道队列有串行队列和并发队列,主队列就属于串行队列,串行队列里面的任务是按顺序执行,并发队列里的任务是并发执...

  • GCD简单使用

    队列类型 并发队列(Concurrent Dispatch Queue)任务并发(同步)执行 串行队列(Seria...

  • iOS开发之GCD并发队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 03 ...

  • 如何设计高并发接口?

    并发队列的选择 Java的并发包提供了三种常见的并发队列实现:arrayblockingqueue、concurr...

  • iOS开发多线程之GCD

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 GCD...

  • iOS开发之GCD同步任务加强

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 004...

  • 高并发接口设计思路

    并发队列的选择 Java的并发包提供了三个常用的并发队列实现,分别是:ArrayBlockingQueue、Con...

  • iOS开发之GCD串行队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 实例d...

网友评论

      本文标题:并发编程之并发队列

      本文链接:https://www.haomeiwen.com/subject/nznmnqtx.html