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

Java 具有等待/通知模式的消费者-生产者模式,java,multithreading,queue,Java,Multithreading,Queue,我正在研究一个生产者-消费者模式,它应该可以处理队列。与通常的消费者线程和生产者线程一样,生产者将以3到5秒的特定时间间隔向队列中添加项目,消费者将在队列不为空时等待处理该项目 作为一项要求,生产者应该并且将不间断地生产项目,这意味着如果队列已满,它将继续生产,这就是为什么我不能使用BlockingQueue实现,因为它们要么等待队列有可用空间,要么抛出异常 我当前的实现如下 // consumer's Runnable public void run() { while(true) {

我正在研究一个生产者-消费者模式,它应该可以处理队列。与通常的消费者线程和生产者线程一样,生产者将以3到5秒的特定时间间隔向队列中添加项目,消费者将在队列不为空时等待处理该项目

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

我当前的实现如下

// consumer's Runnable
public void run() {
    while(true) {
        if(!queue.isEmpty()) {
            currentItem = queue.poll();
            process(currentItem);
        }
    }
}
即使生产者线程没有生成任何项目,该线程仍将保持循环


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

您读过javadoc吗?你不明白什么?是的,我读过,还有几篇帖子。很难解释我不明白的地方,因为我不熟悉等待/通知和阻塞队列。这就是我想要的一个简单的例子,关于在一个时间间隔内生产,并在可用时立即消费。在这里,不能要求提供示例。使用google查找一个问题,如果您有不明白的地方,并且文档没有解释,请回来询问。这样,您就可以更新问题了,您的消费者实现没有不必要的循环等待。使用take。它将等待项目可用。