阻塞隊列是與普通隊列的區別有兩點spa
1.阻塞隊列獲取元素時,若是隊列爲空,則會等待隊列有元素,不然就阻塞隊列(普通隊列返回結果,無元素)隊列
2.阻塞隊列放入元素時,若是隊列滿,則等待隊列,直到有空位置,而後插入。(普通隊列,要麼直接擴容,要麼直接沒法插入,不阻塞)element
阻塞隊列的最佳場景就是生產者和消費者,使用代碼時無需判斷直接獲取並處理(普通隊列得判斷有沒有元素,阻塞隊列不用判斷,無元素自身就會阻塞,直到有東西)get
代碼比較queue
阻塞隊列while
element = queue.get(); //阻塞直到獲取元素再處理co
// do something阻塞
非阻塞隊列非阻塞
while(true) {background
element = queue.get();
if (element != null) {
//do something
}
}