21道并发编程面试题(12)

    SynchronousQueue队列内部仅容纳一个元素,当一个线程插入一个元素后会被阻塞,除非这个元素被另一个线程消费;

21.ConcurrentLinkedQueue

  ConcurrentLinkedQueue:是一个适用于高并发场景下的队列,通过无锁的方式,实现了高并发状态下的高性能,通常ConcurrentLinkedQueue性能好于BlockingQueue,它是一个基于链接节点的无界线程安全队列。该队列的元素遵循先进先出的原则。头是最先加入的,尾是最近加入的,该队列不允许null元素;

  ConcurrentLinkedQueue重要方法:

    add()和offer()都是加入元素的方法(在ConcurrentLinkedQueue中这两个方法没有任务区别);

    poll()和peek()都是取头元素节点,区别在于前者会删除元素,后者不会;

package com.wn.Queue; import java.util.concurrent.ConcurrentLinkedDeque; public class ConcurrentLinkedDequeTest { public static void main(String[] args) throws InterruptedException { ConcurrentLinkedDeque q=new ConcurrentLinkedDeque(); q.offer("1"); q.offer("2"); q.offer("3"); //从头获取元素,删除该元素 System.out.println(q.poll()); //从头获取元素,不删除该元素 System.out.println(q.peek()); //获取总长度 System.out.println(q.size()); } }

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c628f105a4eead5224f1076e66487750.html