Java中怎么使用ArrayBlockingQueue解析阻塞队列

这期内容当中小编将会给大家带来有关Java中怎么使用ArrayBlockingQueue解析阻塞队列,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

创新互联公司2013年成立,是专业互联网技术服务公司,拥有项目做网站、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元市南做网站,已为上家服务,为市南各地企业和个人服务,联系电话:18980820575

阻塞队列是java开发时常用的一个数据结构。首先看一下阻塞队列的作用是什么。阻塞队列的作用,从源码中类的注释中来了解,是最清晰准确的。

ArrayBlockingQueue是一个用数组实现的有界阻塞队列。提供FIFO的功能。队列头上的元素是在队列中呆了最长时间的元素,队列尾上的元素是在队列中呆了时间最短的元素。新元素会插入在队列尾部,从队列获取元素时会从队列头上获取。

这是一个传统的有界队列,在这个有界队列里,一个固定大小的数组用来保存生产者产生的元素和消费者获取的元素。一旦创建,大小不可改变。往已满的队列中尝试添加元素,会阻塞操作。从空的队列中获取元素,也会阻塞操作。

这个类为等待中的生产着和消费者线程排序提供可选的公平策略。默认情况下,顺序是没有保证的。但是,一个用fairness=true创建的队列可以保证FIFO特性。公平性通常会降低吞吐量,但是可以减少易变性并避免饥饿。

/**
 * A bounded {@linkplain BlockingQueue blocking queue} backed by an
 * array. This queue orders elements FIFO (first-in-first-out). The
 * head of the queue is that element that has been on the
 * queue the longest time. The tail of the queue is that
 * element that has been on the queue the shortest time. New elements
 * are inserted at the tail of the queue, and the queue retrieval
 * operations obtain elements at the head of the queue.
 * 

This is a classic "bounded buffer", in which a  * fixed-sized array holds elements inserted by producers and  * extracted by consumers. Once created, the capacity cannot be  * changed. Attempts to {@code put} an element into a full queue  * will result in the operation blocking; attempts to {@code take} an  * element from an empty queue will similarly block.  * 

This class supports an optional fairness policy for ordering  * waiting producer and consumer threads. By default, this ordering  * is not guaranteed. However, a queue constructed with fairness set  * to {@code true} grants threads access in FIFO order. Fairness  * generally decreases throughput but reduces variability and avoids  * starvation.  * 

This class and its iterator implement all of the  * optional methods of the {@link Collection} and {@link  * Iterator} interfaces.  * 

This class is a member of the  *   * Java Collections Framework.  * @since 1.5  * @author Doug Lea  * @param  the type of elements held in this collection  **/

上述就是小编为大家分享的Java中怎么使用ArrayBlockingQueue解析阻塞队列了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


分享标题:Java中怎么使用ArrayBlockingQueue解析阻塞队列
网页地址:http://scyanting.com/article/jsdjgs.html