java 队列默认长度 java常用队列

发布时间:2023-05-17 11:40:18

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元素不允许使用,就像大多数其他并发集合一样。

上一篇 java反射获取方法里的参数值 java反射 获取方法
下一篇 java多线程池引用传递 java 多线程调用接口

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题