生产者消费者问题Java实现

生产消费者模型

多线程并发应用程序有一个经典的模型,即生产者/消费者模型。系统中,产生消息的是生产者,处理消息的是消费者,消费者和生产者通过一个缓冲区进行消息传递。生产者产生消息后提交到缓冲区,然后通知消费者可以从中取出消息进行处理。消费者处理完信息后,通知生产者可以继续提供消息。

要实现这个模型,关键在于消费者和生产者这两个线程进行同步。也就是说:只有缓冲区中有消息时,消费者才能够提取消息;只有消息已被处理,生产者才能产生消息提交到缓冲区。

生产消费者模式如下图。

缓冲区实际上是一个先进先出的队列,锁(信号量)的条件notEmpty和notFull。

Java实现:

效果:

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注