2017-01-16 55 views
-1

我們想要從阻塞隊列中獲取連續的數據流。不斷從阻塞隊列中獲取數據

遵循情景:由多個階段組成的管道,通過鏈接的阻塞隊列連接,將所有處理的數據排入最後一個阻塞隊列。數據的到達不能保證準時(或以更好的方式表達:數據可能以突發形式出現)。

消費者應以非阻塞方式從管道中讀取數據。如果數據存在,則讀取數據,如果沒有數據存在,則假定爲零(數字:0)值。達到這個目標的最好方法是什麼?

+0

['poll'的隊列](https://docs.oracle.com/javase/7/docs/api/java/util/Queue.html#poll()),檢查是否爲null,如果是則使用零。顯然是 –

+0

。而已。謝謝。 (你可以把這個作爲答案,所以我可以把它標記爲已解決) – Shinzon

回答

0

poll the queue,檢查null,並使用零,如果它是:

Integer valueFromQueue = queue.poll(); 
int valueToUse = (valueFromQueue != null) ? valueFromQueue : 0; 

如果你使用的番石榴,您可以使用MoreObjects.firstNonNull簡化的語法如下:

int valueToUse = MoreObjects.firstNonNull(queue.poll(), 0);