java基礎 - BlockingQueue 阻塞隊列

java 基礎- BlockingQueue 阻塞隊列

阻塞隊列

阻塞隊列: 當隊列中沒有值時就等待,當隊列中有值時變得 available

阻塞隊列特點

  • 阻塞
  • 線程安全(BlockingQueue 接口定義的方法是線程安全的,但是繼承 Collection 接口的方法就不一定是原子操作,需要額外的同步操作,如 addAll 操作)
  • 不允許插入的元素爲 Null,當插入 Null 時,拋出 NullPointerException 異常
  • 可以是有界隊列
  • 內存一致性的影響: 線程加入對象到 BlockingQueue 的操作要早於其他線程訪問 BlockingQueue 或者是其他線程對 BlockingQueue 的 remove 操作

阻塞隊列方法

action Throws exception Special value Blocks Times out
Insert add(e) offer(e) put(e) offer(e, time, unit)
Remove remove() poll() take() poll(time, unit)
Examine element() peek() not applicable not applicable

在這裏插入圖片描述

實現

  • ArrayBlockingQueue
  • LinkedBlockingQueue
  • PriorityBlockingQueue
  • DelayQueue
  • SynchronousQueue
  • LinkedTransferQueue
  • LinkedBlockingDeque

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章