Java BlockingQueue采用vs poll

时间:2016-07-10 01:31:48

标签: java

我正在运行以下流程:

  • 如果队列中有项目,则应处理该项目。
  • 每5分钟至少应处理一件商品。如果没有,则添加虚拟物品。

我正在考虑使用BlockingQueue来完成此任务 - 它提供了take()poll(timeout, timeunit)函数来执行此操作。

使用take,我只需要while(item = queue.take()){ process(item); }。将运行第二个线程,每5分钟将一个虚拟项添加到队列中,这样每隔5分钟就可以保证至少处理这个虚拟项目。

poll我会做

while(true){
    item = queue.poll(5L, TimeUnit.MINUTES);
    if(item == null) item = 'dummyitem';
    process(item);
}

这些方法之间有区别,哪一个更好?

0 个答案:

没有答案