订阅类似于Observer模式的通知事件

时间:2015-03-27 11:35:03

标签: java multithreading concurrency wait observer-pattern

在我提出问题之前我想说,我知道有很多半问题。但它们并没有真正涵盖我的情景,因为我想在一瞬间展示。

我面临以下情况:

有一个Database类,它是另一个类的私有我将调用DBMS(DatabaseManagementSystem),它提供对DB的安全读/写访问。而另一节课我会打电话给Consumer

DBMSConsumer运行自己的主题。 DBMS - 线程只获取排队数据并将其写入DatabaseConsumer处理来自Database提供的DBMS的数据。

经典的Producer-Consumer模式,其间有一个线程安全队列(这里有其他问题建议)在这里不适用,因为那时我需要复制Database中的所有数据进入线程安全队列或另一个线程安全结构。这并不完全符合DBMS的设计,可以安全访问DB。 此外,消费者在等待DB中的新变化的大部分时间都要花费,而单个消费者只需要存储在DB中的一小部分数据就这样推动消费者的所有数据都会产生大量不必要的开销。

总结:

理想情况下,Consumers会等待DB更改,然后由DBMS收到通知,最后读取所需数据并进行处理。

我的计划:

我想实现一种观察者模式。因此,每个消费者在完成数据处理后都会进入等待状态,并在DBMS更改时通过DB通知。 Consumer可以订阅以从DBMS接收通知事件。

现在我的问题是:是否有一种模式涵盖了这种情况?或者有人实施了半圆形设计,并为我提出了一些建议?

由于这更像是一个设计问题,我不太确定这是否重要,但我正在使用Java(JDK8)。

非常感谢, FLO

0 个答案:

没有答案