java8的官方文件如下翻译:
1、LinkedBlockingQueue:blocking基于链接节点的可选限制 queue 。 FIFO(先进先出)这个队列排列元素。 队列的头部是队列中最长的元素。 队列的尾部是队列中最短时间的元素。 新元素插入队列尾部,队列检索操作获取队列头部元素。 链接队列通常比基于阵列的队列具有更高的吞吐量,但在大多数并发应用程序中,可预测性较低。
blocking queue说明:不接受null元素;可能容量有限;设计主要用于生产者 - 消费者队列;不支持任何类型的“关闭”或“关闭”操作,说明线程安全不再添加项目;
2、PriorityQueue:
2.1、基于优先级堆的无限优先级queue 。 根据它们的有序naturall,优先级队列的元素 ordering ,或者在队列结构中提供Comparator,这取决于所使用的结构方法。 null元素不允许优先队列。 依靠自然排序的优先级队列也不允许插入无与伦比的对象(这可能会导致Clascastexception )。
2.2、队列的头部是相对于指定顺序的最小元素。 如果多个元素被绑定到最小值,那么头就是这些元素之一 - 关系被任意破坏。 队列检索操作polll操作 , remove , 在队列头部访问peek和element的元件。
2.3、优先级队列是无限的,但是有管理用于存储队列中元素的数组大小的内部容量 。 至少和队列大小一样大。 当元素被添加到优先级队列中时,其容量会自动增加。 增长政策的细节没有规定。
2.4、实现Collection和Iterator接口的所有可选方法及其迭代器。 方法iterator()中提供的迭代器不能保证优先级队列的元素以任何特定顺序遍历。 如需有序遍历,请考虑使用Arrayss.sort(pq.toArray()) 。
2.5、请注意,这是不同步的。 若任何线程修改队列,多线程不应同时访问PriorityQueue实例。 但是PriorityBlockingQueue类使用线程安全。
实现注意事项:这一实现提供了O(log(n))入队和出队方式的时间( offer , poll , remove()和add ); remove(Object)和contains(Object)方法的线性时间; 以及恒定时间的检索方法( peek , element和size )。
3、ConcurrentLinkedQueue:deque基于链接节点的无界并发(deque是双端队列) 。 并发插入、删除和访问操作可以跨多个线程安全执行。 A concurentlinkedeque是许多线程共享公共集合访问的适当选择。null元素不允许使用,就像大多数其他并发集合一样。