Queue

作者: 萌妈码码 | 来源:发表于2018-05-24 23:23 被阅读0次

Queue Interface

Queue中定义的增删查方法都分别存在两种形式:1)操作失败抛出异常;2)操作失败返回null或者false。如下:

Queue接口方法分类总结

其中,insert操作失败(超出容量限制)时抛出IllegalStateException;队列为空是,remove()和element()方法抛出NoSuchElementException。

Queue的实现类通常都不允许插入null值。(不过LinkedList是个例外,由于历史原因,它支持插入null值,不过实际使用时应该尽量避免。)

Queue Implementations

General-Purpose Queue Implementations

LinkedList(@NonThreadSafe):     FIFO

PriorityQueue(@NonThreadSafe):基于balanced binary heap数据结构实现(Object[] queue),按照制定的顺序排序:元素自然排序,或构造时显示制定的Comparator。通过interator遍历PriorityQueue得到的序列不一定是排序的。如果需要有序遍历,可以调用Arrays.sort(pq.toArray()).

Concurrent Queue Implementations

BlockingQueue Interface extends Queue, 是Queue的同步版本。它的实现包括:

LinkedBlockingQueue — an optionally bounded FIFO blocking queue backed by linked nodes

ArrayBlockingQueue — a bounded FIFO blocking queue backed by an array

PriorityBlockingQueue — an unbounded blocking priority queue backed by a heap

DelayQueue — a time-based scheduling queue backed by a heap

SynchronousQueue — a simple rendezvous mechanism that uses the BlockingQueue interface

此外,TransferQueue extends BlockingQueue, 有唯一实现LinkedTransferQueue. 可以在元素入队时等待其他线程读取队列完毕。

相关文章

网友评论

      本文标题:Queue

      本文链接:https://www.haomeiwen.com/subject/qadejftx.html