2016-11-06 64 views

回答

3

它们之间的差异是所需同步的性质。

在观察者模式的情况下,当观察对象发生利益变化时,立即通知所有观察者。因此模式需要立即进行每次更改同步。实际上,观察者模式不需要不同的线程。正在改变观察对象的线程可以通知所有注册的观察者。

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

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

+0

谢谢你的解释,我有问题: - 是否有可能在单个java程序中应用这两个概念? –

+0

为什么不呢?真实世界的应用程序非常庞大,因此他们可以在单个程序中应用几十个这样的概念。 – taskinoor