美文网首页数据结构
七个阻塞队列

七个阻塞队列

作者: Ar_8be6 | 来源:发表于2019-07-15 23:40 被阅读0次

ArrayBlockingQueue

基于数组的有界阻塞队列

使用单锁

LinkedBlockingQueue

基于链表的有界阻塞队列

采用双锁机制,锁分离技术实现入队出队互不阻塞

LinkedBlockingDeque

基于双向链表的有界阻塞队列

使用单锁

可用于工作密取的场景

SynchronousQueue

不存储元素的阻塞队列,每个插入操作必须等待另一个线程执行相应的删除操作,反之亦然。队列没有任何内部容量。

公平模式使用dual queue算法-TransferQueue

非公平模式使用dual stack算法-TransferStack

适合传递性场景

LinkedTransferQueue:

基于链表的无界阻塞队列

基于松弛型dual queue算法

总之,结合了ConcurrentLinkedQueue松弛算法以及SynchronousQueue的dual queue算法

PriorityBlockingQueue

支持优先级排序的无界阻塞队列

扩容时使用allocationSpinLock简单的乐观锁,使得在分配新数组内存空间过程中,其他线程线程还可以使用数组,提高了并发性。

DelayQueue

无界阻塞优先队列,存储实现Delayed接口元素

实际存入PriorityQueue

使用Leader-Follower模式变体最小化不必要的定时等待

适合缓存系统与定时任务调度场景

相关文章

  • 并发编程之并发队列

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

  • 探讨阻塞队列和线程池源码

    阻塞队列 非阻塞队列是一个先进先出的单向队列(Queue),而BlockingQueue阻塞队列实际是非阻塞队列的...

  • 七个阻塞队列

    ArrayBlockingQueue 基于数组的有界阻塞队列 使用单锁 LinkedBlockingQueue 基...

  • 阻塞队列(一)(BlockingQueue)

    阻塞队列概要 阻塞队列与我们平常接触的普通队列(list)最大的不同点,在于阻塞队列支持阻塞添加和阻塞删除方法。 ...

  • Java多线程之阻塞队列

    一基本概念:1:什么叫阻塞队列阻塞队列都是相对于非阻塞队列而言的,非阻塞队列就是队列不会对当前线程产生阻塞;例如当...

  • 18.阻塞队列

    [TOC] 阻塞队列 阻塞队列首先是一种队列的数据结构,阻塞表现在此队列提供了操作数据的阻塞方法:阻塞队列提供了可...

  • Java中常用的七个阻塞队列介绍第一篇

    Java中常用的七个阻塞队列介绍第一篇 在上一篇我们对Java中的队列分类做了简单的介绍。本文咱们主要来聊聊阻塞队...

  • 以LinkedBlockingQueue为例浅谈阻塞队列的实现

    目录 阻塞队列简介阻塞队列的定义Java中的阻塞队列 LinkedBlockingQueue单链表定义锁和等待队列...

  • Android中的线程与线程池

    阻塞队列BlockingQueue 阻塞队列常用于生产者——消费者模型,生产者往阻塞队列插入数据,消费者往阻塞队列...

  • 有关java多线程的文章

    先行概念 阻塞队列和非阻塞队列 阻塞和非阻塞队列的区别概念:https://www.cnblogs.com/min...

网友评论

    本文标题:七个阻塞队列

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