Java进阶:BlockingQueue阻塞队列的使用
生活随笔
收集整理的這篇文章主要介紹了
Java进阶:BlockingQueue阻塞队列的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 概述
- 2. 常用的阻塞隊列
- 3. 操作方法
- 3.1 拋出異常
- 3.2 特殊值
- 3.3 阻塞
- 3.4 超時
1. 概述
相比平時討論的隊列,阻塞隊列增加了阻塞的功能:
- 當有限長度的隊列填滿了數據時,繼續往隊列添加數據的線程將被阻塞住,持續等待,直到超時或隊列數據被消費而騰出空間
- 當隊列數據為空時,消費線程會因為取不到數據而被阻塞,直到生產線程往隊列添加數據,此時成功取到數據而不再阻塞
2. 常用的阻塞隊列
- ArrayBlockingQueue:由數組結構組成的有界阻塞隊列,底層的出入隊由同一個ReentrantLock加鎖控制,可以傳遞fair參數指定使用公平鎖 or 非公平鎖
- LinkedBlockingQueue:由鏈表結構組成的有界阻塞隊列(容量默認是Integer.MAX_VALUE,因此也可以理解成無界)。其出入隊由不同的ReentrantLock控制,因此性能優于ArrayBlockingQueue
- SynchronousQueue:只存儲一個元素的阻塞隊列,容量大小只有1
<
總結
以上是生活随笔為你收集整理的Java进阶:BlockingQueue阻塞队列的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java进阶:ReentrantLock
- 下一篇: SpringBoot使用CommandL