Java阻塞队列
来源:互联网 发布:班班软件下载 编辑:程序博客网 时间:2024/06/06 05:39
阻塞队列(BlockingQueue)是指一个这样的一个Queue,它支持两个额外的操作:
- 当队列为空时,获取元素的线程会一直阻塞等待直到队列变为非空;
- 当队列已满时,添加元素的线程会一直阻塞等待直到队列有可用空间;
阻塞队列提供了四种不同的形式操作方法:
JDK提供了7个阻塞队列,分别是:
- ArrayBlockingQueue :一个由数组结构组成的有界阻塞队列。
- LinkedBlockingQueue :一个由链表结构组成的有界阻塞队列。
- PriorityBlockingQueue :一个支持优先级排序的无界阻塞队列。
- DelayQueue:一个使用优先级队列实现的无界阻塞队列。
- SynchronousQueue:一个不存储元素的阻塞队列。
- LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。
- LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。
ArrayBlockingQueue
ArrayBlockingQueue是一个用数组实现的有界阻塞队列。此队列按照先进先出(FIFO)的原则对元素进行排序。默认情况下不保证访问者公平的访问队列,所谓公平访问队列是指阻塞的所有生产者线程或消费者线程,当队列可用时,可以按照阻塞的先后顺序访问队列,即先阻塞的生产者线程,可以先往队列里插入元素,先阻塞的消费者线程,可以先从队列里获取元素。通常情况下为了保证公平性会降低吞吐量。我们可以使用以下代码创建一个公平的阻塞队列:
ArrayBlockingQueue fairQueue = new ArrayBlockingQueue(99, true);一旦被创建,其容量不能被改变。
0 0
- java阻塞队列以及非阻塞队列
- java阻塞队列与非阻塞队列
- java 阻塞队列
- JAVA 阻塞队列 ArrayBlockingQueue
- Java中的阻塞队列
- java阻塞队列
- Java 阻塞队列 BlockingQueue
- Java的阻塞队列
- Java中的阻塞队列
- java阻塞队列
- java 阻塞队列BlockingQueue
- java多线程-阻塞队列
- java 阻塞队列
- JAVA 阻塞队列
- Java多线程 -- 阻塞队列
- Java阻塞队列
- Java中的阻塞队列
- java 阻塞队列
- PostgreSQL连接C/C++接口实例
- 访问cv::Mat中的数据时遇到的指针类型问题
- 系统学习Python
- ResourceBundle.getBundle读取资源文件的路径
- 如何读取、上传Android模拟器中sdcard的内容
- Java阻塞队列
- Centos编译boost
- iOS 开发runLoop 机制详解
- centos7.0 mysql 安装问题记录 | erlang 安装记录 | 其他
- 我对量子、量子信息和量子密码的困惑和质疑—王育民
- C++中委托设计模式?
- 啊啊
- Android 工具类之--TextUtils
- 数据库编程第1章