生产者/消费者模式与观察者模式之间的差异

时间:2016-11-06 04:53:46

标签: java multithreading design-patterns

我想了解观察者模式与生产者/消费者最常见问题之间的区别,因为两者都需要同步以便更改可用,以及如何实现两者(如果它们不同)

2 个答案:

答案 0 :(得分:3)

它们之间的区别在于所需的同步性质。

对于观察者模式,只要在观察对象中产生感兴趣的变化,就会立即通知所有观察者。因此模式需要立即进行每次更改同步。事实上,观察者模式不需要不同的线程。正在改变观察对象的线程可以通知所有已注册的观察者。

但是,在生产者 - 消费者的情况下,唯一需要的同步是消费者必须在没有元素时等待,并且生产者必须在缓冲区满时等待。但是不需要每个对象同步。生产者可以在消费者消费任何对象之前生成多个对象,并且消费者可以一次消费多个对象。因此,此处不需要像观察者那样立即通知。

就实施而言,您可以查看维基百科的文章:Observer PatternProducer-Consumer Problem

答案 1 :(得分:0)

生产者消费者问题可以看作是观察者模式的一个例子。