1. 程式人生 > >阻塞隊列

阻塞隊列

並發編程 優先級 art 雙向 結構 get post 插入 detail

·ArrayBlockingQueue:一個由數組結構組成的有界阻塞隊列。
·LinkedBlockingQueue:一個由鏈表結構組成的有界阻塞隊列。
·PriorityBlockingQueue:一個支持優先級排序的無界阻塞隊列。
·DelayQueue:一個使用優先級隊列實現的無界阻塞隊列。
·SynchronousQueue:一個不存儲元素的阻塞隊列。
·LinkedTransferQueue:一個由鏈表結構組成的無界阻塞隊列。
·LinkedBlockingDeque:一個由鏈表結構組成的雙向阻塞隊列。

阻塞隊列(BlockingQueue)是一個支持兩個附加操作的隊列。這兩個附加的操作支持阻塞
的插入和移除方法。
1)支持阻塞的插入方法:意思是當隊列滿時,隊列會阻塞插入元素的線程,直到隊列不
滿。
2)支持阻塞的移除方法:意思是在隊列為空時,獲取元素的線程會等待隊列變為非空。

阻塞隊列常用於生產者和消費者的場景,生產者是向隊列裏添加元素的線程,消費者
從隊列裏取元素的線程。阻塞隊列就是生產者用來存放元素、消費者用來獲取元素的容器。

插入和移除操作的4中處理方式

技術分享圖片

註意 如果是無界阻塞隊列,隊列不可能會出現滿的情況,所以使用put或offer方法永
遠不會被阻塞,而且使用offer方法時,該方法永遠返回true。

參考:來之《java並發編程的藝術》

其他資料:

http://blog.csdn.net/qq_23359777/article/details/70146778

阻塞隊列