1. 程式人生 > >並發_006 容器 隊列

並發_006 容器 隊列

timeunit 元素 成功 queue nbsp 鏈接 優先級 span 雙端

目錄

  • 非阻塞隊列
  • 阻塞隊列
  • 雙端隊列

非阻塞隊列(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;否則返回取得的元素

並發_006 容器 隊列