具有等待/通知模式的消费者 - 生产者模式

时间:2014-06-07 14:16:39

标签: java multithreading queue

我正在研究一个应该使用队列的生产者 - 消费者模式。通常是消费者ThreadProducer线程,生产者将以特定时间间隔(从3到5秒)将项目添加到队列,消费者将等待处理一旦队列不为空,就立即行动。

作为要求,生产者应该并且将不停地生成项目,这意味着如果队列已满,它将继续生成,这就是我无法使用BlockingQueue的原因实现,因为它们要么等待队列有可用空间,要么抛出异常。

我目前的实施如下

// consumer's Runnable
public void run() {
    while(true) {
        if(!queue.isEmpty()) {
            currentItem = queue.poll();
            process(currentItem);
        }
    }
}

即使生产者Thread没有生成任何项目,该线程也将继续循环。

如何等到生产者将一个项目添加到队列中,以及什么是没有上限的好Queue实现?

0 个答案:

没有答案