2017-01-16 5 views
-1

ブロッキングキューから連続したデータストリームをフェッチします。ブロッキングキューからデータを連続的にフェッチする

シナリオ:リンクされたブロッキングキューを介して接続された複数のステージからなるパイプラインが、処理されたすべてのデータを最後のブロッキングキューに排出します。データの到着が時間通りになることが保証されていない(またはより良い方法でそれを表現する:データがバーストで到着する可能性がある)。

消費者はパイプからノンブロッキングの方法で読み込みます。データが存在する場合、データが存在しない場合、ゼロ(数字:0)の値をとる。これを達成する最善の方法は何ですか?

+0

[ 'poll'キュー](https://docs.oracle.com/javase/7/docs/api/java/util/Queue.html#poll())を参照し、 'null'をチェックし、存在する場合はゼロを使用します。明らかに –

+0

。それでおしまい。ありがとう。 (あなたは答えとしてこれを記入してください、私はそれを解決済みとしてマークすることができます) – Shinzon

答えて

0

poll the queuenullをチェックし、それがある場合には、ゼロを使用します。

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

あなたはグアバを使用している場合、あなたはMoreObjects.firstNonNullを使用してこの構文を簡素化することができます。

int valueToUse = MoreObjects.firstNonNull(queue.poll(), 0); 
関連する問題