BlockingQueue接口方法說明

BolckingQueue接口

BlockingQueue 是juc下所有隊列的接口,這些隊列包括:

  • ArrayBolckingQueue
  • DelayedWorkQueue
  • DelayQueue
  • FariBlockQueue
  • LinkedBlockingQueue
  • PriorityBolckingQueue
  • SychronousQueue

先來熟悉一下相關的接口方法標準


  • boolean add(E e)
    從函數說明可以看出,這個方法是立即返回操作結果的,如果是在有界隊列,隊列滿的時候,是直接拋出IllegalStateException異常的,所以建議在有界隊列的時候,使用offer()

  • boolean offer(E e) 方法說明又強調了一次,如果是有界隊列,這個比add方法好。。我知道了。。如果沒有空間了,會一直阻塞,直到拋出異常

  • 還有另外一個offer方法
    boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException;
    這個offer方法是可設置等待時間,并且是可中斷的,成功入隊返回true,超時失敗false

  • put(E e) 隊列滿的時候一直等待直到中斷異常

  • E take() 方法,返回檢索獲取到隊列頭的元素并且移除他,如果沒有可獲取的元素,還是一直傻等,直到拋出中斷異常

  • E poll(long timeout, TimeUnit unit)方法,等待一個指定的時間段,如果在等待過程中中斷了,拋出中斷異常,如果等待時間還沒有獲取到,返回null

總結如下:

put(E e)和take()一個是入隊一個出對,是會一直傻等直到拋出中斷異常的
offer(E e, Long timeout, TimeUnit unit)和poll(long timeout, TimeUnit unit)是在一個時間段內等,不會一直傻等的

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • 阻塞隊列 BlockingQueue BlockingQueue用法 BlockingQueue 通常用于一個線...
    MPPC閱讀 1,866評論 0 3
  • Java-Review-Note——4.多線程 標簽: JavaStudy PS:本來是分開三篇的,后來想想還是整...
    coder_pig閱讀 1,682評論 2 17
  • 一、并發 進程:每個進程都擁有自己的一套變量 線程:線程之間共享數據 1.線程 Java中為多線程任務提供了很多的...
    SeanMa閱讀 2,540評論 0 11
  • 第三章 Java內存模型 3.1 Java內存模型的基礎 通信在共享內存的模型里,通過寫-讀內存中的公共狀態進行隱...
    澤毛閱讀 4,383評論 2 22