在我们理解了ConcurrentLinkedQueue的原理后,对于其列表中的增加和删除函数,即入队和出队的方法有了初步认识,那么在实际使用时,对于ConcurrentLinkedQueue的使用注意事项应该有所遵守。同时ConcurrentLinkedQueue的使用方法非常多,这里我们全部罗列出来,并就peek()方法实例带来介绍。
1.使用事项
(1)ConcurrentLinkedQueue的迭代器是弱一致性的,这在并发容器中是比较普遍的现象,主要是指在一个线程在遍历队列结点而另一个线程尝试对某个队列结点进行修改的话不会抛出ConcurrentModificationException,这也就造成在遍历某个尚未被修改的结点时,在next方法返回时可以看到该结点的修改,但在遍历后再对该结点修改时就看不到这种变化。
(2)使用了这个ConcurrentLinkedQueue 类之后,如果直接使用它提供的函数,比如:queue.add(obj); 或者 queue.poll(obj);,这样不需要做任何同步。
2.ConcurrentLinkedQueue用法图解
3.peek()方法
获取但不移除此队列的头;如果此队列为空,则返回 null
public static void main(String[] args) { ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue(); queue.offer("哈哈哈"); System.out.println("offer后,队列是否空?" + queue.isEmpty()); System.out.println("从队列中peek:" + queue.peek()); System.out.println("从队列中peek:" + queue.peek()); System.out.println("从队列中peek:" + queue.peek()); System.out.println("pool后,队列是否空?" + queue.isEmpty()); }
以上就是java中ConcurrentLinkedQueue的用法整理,这里我们只对peek()出队的方法做了详细介绍,如果还想了解更多ConcurrentLinkedQueue使用,可以根据需要按照上方的图解去寻找对应的方法资料。