-1
我們想要從阻塞隊列中獲取連續的數據流。不斷從阻塞隊列中獲取數據
遵循情景:由多個階段組成的管道,通過鏈接的阻塞隊列連接,將所有處理的數據排入最後一個阻塞隊列。數據的到達不能保證準時(或以更好的方式表達:數據可能以突發形式出現)。
消費者應以非阻塞方式從管道中讀取數據。如果數據存在,則讀取數據,如果沒有數據存在,則假定爲零(數字:0)值。達到這個目標的最好方法是什麼?
我們想要從阻塞隊列中獲取連續的數據流。不斷從阻塞隊列中獲取數據
遵循情景:由多個階段組成的管道,通過鏈接的阻塞隊列連接,將所有處理的數據排入最後一個阻塞隊列。數據的到達不能保證準時(或以更好的方式表達:數據可能以突發形式出現)。
消費者應以非阻塞方式從管道中讀取數據。如果數據存在,則讀取數據,如果沒有數據存在,則假定爲零(數字:0)值。達到這個目標的最好方法是什麼?
poll
the queue,檢查null
,並使用零,如果它是:
Integer valueFromQueue = queue.poll();
int valueToUse = (valueFromQueue != null) ? valueFromQueue : 0;
如果你使用的番石榴,您可以使用MoreObjects.firstNonNull
簡化的語法如下:
int valueToUse = MoreObjects.firstNonNull(queue.poll(), 0);
['poll'的隊列](https://docs.oracle.com/javase/7/docs/api/java/util/Queue.html#poll()),檢查是否爲null,如果是則使用零。顯然是 –
。而已。謝謝。 (你可以把這個作爲答案,所以我可以把它標記爲已解決) – Shinzon