並發_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;否則返回取得的元素
並發_006 容器 隊列