如何创建容量受限的队列实现?

San*_*chi 5 java concurrency

在Java API文档中,我尝试从实现的角度来理解以下解释。

http://docs.oracle.com/javase/6/docs/api/java/util/Queue.html

除了基本的集合操作之外,队列还提供额外的插入、提取和检查操作。这些方法中的每一个都以两种形式存在:一种在操作失败时抛出异常,另一种返回特殊值(null 或 false,具体取决于操作)。后一种形式的插入操作是专门为容量受限的队列实现而设计的;在大多数实现中,插入操作不会失败。

所以,我想写一个程序来验证,在什么情况下它会抛出异常。如何创建容量受限的队列实现并验证?

有人可以举个例子提出建议吗?

dim*_*414 4

您应该使用BlockingQueue诸如ArrayBlockingQueue,即:

由数组支持的有界阻塞队列。该队列对元素进行 FIFO(先进先出)排序。队列的头部是在队列中停留时间最长的元素。队列的尾部是在队列中停留时间最短的元素。新元素插入到队列尾部,队列检索操作获取队列头部元素。

这是一个经典的“有界缓冲区”,其中固定大小的数组保存由生产者插入和由消费者提取的元素。一旦创建,容量就无法更改。尝试将元素放入已满的队列中将导致操作阻塞;尝试从空队列中获取元素同样会被阻塞。