我正在研究一个应该使用队列的生产者 - 消费者模式。通常是消费者Thread
和Producer
线程,生产者将以特定时间间隔(从3到5秒)将项目添加到队列,消费者将等待处理一旦队列不为空,就立即行动。
作为要求,生产者应该并且将不停地生成项目,这意味着如果队列已满,它将继续生成,这就是我无法使用BlockingQueue
的原因实现,因为它们要么等待队列有可用空间,要么抛出异常。
我目前的实施如下
// consumer's Runnable
public void run() {
while(true) {
if(!queue.isEmpty()) {
currentItem = queue.poll();
process(currentItem);
}
}
}
即使生产者Thread
没有生成任何项目,该线程也将继续循环。
如何等到生产者将一个项目添加到队列中,以及什么是没有上限的好Queue
实现?