并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue使用场景总结

简介: 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue使用场景总结

适用阻塞队列的好处:多线程操作共同的队列时不需要额外的同步,另外就是队列会自动平衡负载,即那边(生产与消费两边)处理快了就会被阻塞掉,从而减少两边的处理速度差距。

当许多线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。

LinkedBlockingQueue 多用于任务队列

ConcurrentLinkedQueue  多用于消息队列

多个生产者,对于LBQ性能还算可以接受;但是多个消费者就不行了mainLoop需要一个timeout的机制,否则空转,cpu会飙升的。LBQ正好提供了timeout的接口,更方便使用

如果CLQ,那么我需要收到处理sleep

单生产者,单消费者  用 LinkedBlockingqueue

多生产者,单消费者   用 LinkedBlockingqueue

单生产者 ,多消费者   用 ConcurrentLinkedQueue

多生产者 ,多消费者   用 ConcurrentLinkedQueue

目录
相关文章
|
Java 调度
多线程学习(三)那些队列可用于线程池
多线程学习(三)那些队列可用于线程池
99 0
|
算法 安全 Java
【阻塞队列BlockingQueue&非阻塞队列ConcurrentLinkedQueue&同步队列SyncQueue】
【阻塞队列BlockingQueue&非阻塞队列ConcurrentLinkedQueue&同步队列SyncQueue】
|
7月前
|
存储 Java C++
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
61 0
|
7月前
并发编程之BlockingQueue(阻塞队列)的详细解析
并发编程之BlockingQueue(阻塞队列)的详细解析
29 0
|
消息中间件 缓存 Java
多线程应用——阻塞队列
用数组实现阻塞队列
67 0
|
存储 缓存 安全
BlockingQueue阻塞队列原理以及实现
BlockingQueue阻塞队列原理以及实现
131 0
|
存储 消息中间件 安全
堵塞队列BlockingQueue 使用与理解
堵塞队列本质就是队列,底层数据结构 通常是由数组,或者链表构成。实现FIFO思想 当阻塞队列是空时,从队列中获取元素的操作将会被阻塞。 当阻塞队列是满时,往队列里添加元素的操作将会被阻塞。
169 0
|
算法 安全 Java
阻塞队列、线程池、原子性及并发工具类
阻塞队列、线程池、原子性及并发工具类的简单示例
154 1
|
Java API
2020大厂面试JUC线程重要技术点【集合+线程+阻塞队列+线程池】(下)
2020大厂面试JUC线程重要技术点【集合+线程+阻塞队列+线程池】(下)
137 0
2020大厂面试JUC线程重要技术点【集合+线程+阻塞队列+线程池】(下)
|
安全 Java
2020大厂面试JUC线程重要技术点【集合+线程+阻塞队列+线程池】(上)
2020大厂面试JUC线程重要技术点【集合+线程+阻塞队列+线程池】(上)
117 0
2020大厂面试JUC线程重要技术点【集合+线程+阻塞队列+线程池】(上)