阻塞隊列(BlockingQueue)是一個支持兩個附加操作的隊列。這兩個附加的操作是:在隊列為空時,獲取元素的線程會等待隊列變為非空。當隊列滿時,存儲元素的線程會等待隊列可用。阻塞隊列常用于生產者和消費者的場景,生產者是往隊列里添加元素的線程,消費者是從隊列里拿元素的線程。阻塞隊列就是生產者存放元素的容器,而消費者也只從容器里拿元素。
下圖中展示了線程1往阻塞隊列中添加元素,而線程2從阻塞隊列中移除元素:
使用不同的隊列可以實現不一樣的任務存取策略。在這里,我們可以再介紹下阻塞隊列的成員:
?