并发_006 容器 队列

目录

  • 非阻塞队列
  • 阻塞队列
  • 双端队列

非阻塞队列(AbstractQueue)

队列介绍

  1 ConcurrentLinkedQueue 先进先出队列

  2 PriorityQueue 非并发的优先队列

非阻塞队列方法

  1 add(E e) 将元素e插入队列末尾,如果插入成功,返回true;如果插入失败(队列已满),则会抛出异常 

  2 remove() 移除队首元素,若移除成功,则返回true,如果移除失败(队列为空),则会抛出异常

  3 offer(E e) 将元素e插入队列末尾,如果插入成功,则返回true,则返回true,如果插入失败(队列已满),则返回false

  4 poll() 移除并获取首元素,若成功,则返回首元素,否则返回null

  5 peek() 获取队首元素,若成功,则返回首元素,否则返回null

 

阻塞队列(BlockingQueue)

队列介绍

  1 ArrayBlockingQueue 一个由数组支持的有界队列

  2 LinkedBlockingQueue 一个由链接节点支持的可选有界队列

  3 PriorityBlockingQueue 一个由优先级堆支持的无界优先级队列

  4 DelayQueue 一个由优先级堆支持的、基于时间的调度队列

  5 SynchronousQueue 一个利用 BlockingQueue 接口的简单聚集(rendezvous)机制

阻塞队列方法

  1 put(E e) 队尾插入元素,如果队列满,则等待

  2 take() 从队首取元素,如果队列为空,则等待

  3 offer(E e,long timeout, TimeUnit unit) 队尾存入元素,如果队列满,则等待一定的时间,当时间期限达到时,如果还没有插入成功,则返回false;否则返回true

  4 poll(long timeout, TimeUnit unit) 队首取元素,如果队列空,则等待一定的时间,当时间期限达到时,如果取到,则返回null;否则返回取得的元素       

猜你喜欢

转载自www.cnblogs.com/hpzhu/p/10165835.html