重温生产者和消费者模型
生产者和消费者模型,主要解决的是数据的同步问题,生产者将数据放置一个存储区域,然后消费者过来取数据。这种模式类似于一个中间件,可以使得生产者不需要关心消费者什么时候来拿数据,同时在这种模式下,还可以控制两边的处理速率,避免数据的丢失。
下面以 Java 为例,来写一个生产者和消费者模型。
当队列满了的时候,生产者自己进行阻塞。而当消费者发现队列为空,则将自己阻塞。
所以要实现这个生产者消费者模型,首先必须有以下条件:
- 生产者或者消费者必须支持可阻塞
- 在多线程的情况下,必须保证并发安全(即插入不能产生数据错误),取数据不可以重复取