阻塞隊列與普通隊列區別

阻塞隊列

阻塞隊列是與普通隊列的區別有兩點spa

1.阻塞隊列獲取元素時,若是隊列爲空,則會等待隊列有元素,不然就阻塞隊列(普通隊列返回結果,無元素)隊列

2.阻塞隊列放入元素時,若是隊列滿,則等待隊列,直到有空位置,而後插入。(普通隊列,要麼直接擴容,要麼直接沒法插入,不阻塞)element

 

阻塞隊列的最佳場景就是生產者和消費者,使用代碼時無需判斷直接獲取並處理(普通隊列得判斷有沒有元素,阻塞隊列不用判斷,無元素自身就會阻塞,直到有東西)get

 

代碼比較queue

阻塞隊列while

element = queue.get();  //阻塞直到獲取元素再處理co

// do something阻塞

 

非阻塞隊列非阻塞

while(true) {background

element = queue.get();

if (element != null) {

    //do something

}

}

相關文章
相關標籤/搜索