我正在运行以下流程:
我正在考虑使用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);
}
这些方法之间有区别,哪一个更好?