JDK学习--java.util.concurrent阻塞队列--1

Tiger提供的 java.util.concurrent 包在 集合框架 中加入了 BlockingQueue 接口和五个阻塞队列类。简单的讲,阻塞队列的意思就是当队列无空间时,添加元素的线程执行操作阻塞,直到有空间;或者是,当队列为空无元素可删时,执行删除的线程阻塞,知道有元素可删。BlockingQueue 接口的 Javadoc 给出了阻塞队列的基本用法,如清单 7 所示。生产者中的 put() 操作会在没有空间可用时阻塞,而消费者的 take() 操作会在队列中没有任何东西时阻塞。

另外五个阻塞队列提供的情况各有不同:

    * ArrayBlockingQueue:一个由数组支持的有界队列。
    * LinkedBlockingQueue:一个由链接节点支持的可选有界队列。
    * PriorityBlockingQueue:一个由优先级堆支持的无界优先级队列。
    * DelayQueue:一个由优先级堆支持的、基于时间的调度队列。
    * SynchronousQueue:一个利用 BlockingQueue 接口的简单聚集(rendezvous)机制



前两个类 ArrayBlockingQueue 和 LinkedBlockingQueue 几乎相同,只是在底层存储实现方面有所不同,LinkedBlockingQueue 并不总是有容量界限。无大小界限的 LinkedBlockingQueue 类在添加元素时永远不会有阻塞队列的等待(至少在其中有 Integer.MAX_VALUE 元素之前不会,这个时候采用的容量限制即是Integer.MAX_VALUE)。

你可能感兴趣的:(java,jdk,框架)