Java:生产者消费者示例——处理并发读/写

已发表: 2019-02-17

生产者消费者示例 - 处理并发读:写

producer-consumer problem (也称为bounded-buffer problem )是多进程同步问题的经典 Java 示例。

该问题描述了两个进程, the producerthe consumer ,它们共享一个用作队列的公共、固定大小的缓冲区。 生产者的工作是生成一条数据,将其放入缓冲区并重新开始。

同时,消费者一次只消费一份数据(即从缓冲区中删除)。 问题是确保生产者不会尝试在缓冲区已满时将数据添加到缓冲区中,并且消费者不会尝试从空缓冲区中删除数据。

下面简单的 Java 程序会产生这个问题:

Java 示例——生产者消费者问题

问题:

解决:

添加关键字synchronized以在我们使用数据时锁定data

更好的 Java 程序:

Java 生产者消费者示例结果:

java-producer-consumer-tutorial-crunchify