我们希望从阻塞队列中获取连续的数据流。
遵循方案:由多个阶段组成的管道,通过链接的阻塞队列连接,将所有处理的数据排入最后的阻塞队列。数据的到达无法保证准时(或以更好的方式表达:数据可能以突发方式到达)。
消费者应以非阻塞方式从管道读取。读取数据,如果存在数据,如果不存在数据,则假设零(数字:0)值。实现这一目标的最佳方法是什么?答案 0 :(得分:0)
poll
the queue,检查null
,如果是,则使用零:
Integer valueFromQueue = queue.poll();
int valueToUse = (valueFromQueue != null) ? valueFromQueue : 0;
如果您正在使用Guava,则可以使用MoreObjects.firstNonNull
简化此语法:
int valueToUse = MoreObjects.firstNonNull(queue.poll(), 0);