持续从阻塞队列中获取数据

时间:2017-01-16 14:47:48

标签: java concurrency

我们希望从阻塞队列中获取连续的数据流。

遵循方案:由多个阶段组成的管道,通过链接的阻塞队列连接,将所有处理的数据排入最后的阻塞队列。数据的到达无法保证准时(或以更好的方式表达:数据可能以突发方式到达)。

消费者应以非阻塞方式从管道读取。读取数据,如果存在数据,如果不存在数据,则假设零(数字:0)值。实现这一目标的最佳方法是什么?

1 个答案:

答案 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);
相关问题