本文主要是介绍Java源码心中有数系列 BlockingQueue / BlockingDeque,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
BlockingQueue
适用场景 生产者线程在一端生产 消费者线程在另一端消费
可以安全的实现 生产者消费者问题(多个生产者 多个消费者)
BlockingDeque
Deque double ended queue 双端阻塞队列
线程安全
适用场景 该线程既是生产者 又是消费者
生产者线程需要在两端生产 消费者线程需要在两端消费
三类方法 插入 删除 检查
可能出现的操作结果 抛出一个异常 返回特殊的值 无限期阻塞当前线程 直至能够执行 给定时间内阻塞 超时之后返回特定值
内存一致性效果 将对象放入BlockingDeque之前的线程中的动作发生在 另一个线程中从BlockDeque访问或删除该元素的操作之前
ArrayBlockQueue 实现BlockingQueue 的有界阻塞队列
DelayQueue 实现BlockBlockQueue的 延时无限阻塞队列
LinkedBlockingQueue 实现BlockQueue接口的基于节点的阻塞队列
LinkedTransferQueue 基于节点的无界 TransferQueue 生产者可能会等待消费者接收元素
LinkedBlockingDeque 实现BlockDeque接口的基于节点的阻塞deque
PriorityBlockingQueue 提供阻塞检测操作
SynchronousQueue 一个阻塞队列 每一个插入操作都必须等待另一个线程的删除操作
这篇关于Java源码心中有数系列 BlockingQueue / BlockingDeque的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!