一、概述
1、介绍
强烈建议读者看这篇之前,先了解队列相关知识,以及生产者与消费者模式。
concurrent 包中,BlockingQueue 很好的解决了多线程中,如何高效安全"传输"数据的问题。通过这些高效并且线程安全的队列类,为快速搭建高质量的多线程程序带来极大的便利。
阻塞队列,首先它是一个队列(先进先出),通过一个共享的队列,可以使得数据从队列的一端输入,从另外一端输出。
当队列是空的,从队列中获取元素的操作将会被阻塞。
当队列是满的,从队列中添加元素的操作将会被阻塞。
api文档:https://www.matools.com/api/java8
2、为什么需要阻塞队列?
理由:需要结合生产者与消费者来说。
好处就是不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程,因为这一切BlockingQueue 都一手包办了。在 concurrent 包发布之前,多线程环境下,程序员必须自己控制这些细节,尤其还要兼顾效率和线程安全,这给程序带来不小的复杂度。
3、相关API
BlockingQueue 核心方法
方法类型 11-13 11:23 |