在我提出问题之前我想说,我知道有很多半问题。但它们并没有真正涵盖我的情景,因为我想在一瞬间展示。
我面临以下情况:
有一个Database
类,它是另一个类的私有我将调用DBMS
(DatabaseManagementSystem),它提供对DB的安全读/写访问。而另一节课我会打电话给Consumer
。
DBMS
和Consumer
运行自己的主题。 DBMS
- 线程只获取排队数据并将其写入Database
。 Consumer
处理来自Database
提供的DBMS
的数据。
经典的Producer-Consumer模式,其间有一个线程安全队列(这里有其他问题建议)在这里不适用,因为那时我需要复制Database
中的所有数据进入线程安全队列或另一个线程安全结构。这并不完全符合DBMS
的设计,可以安全访问DB
。
此外,消费者在等待DB
中的新变化的大部分时间都要花费,而单个消费者只需要存储在DB
中的一小部分数据就这样推动消费者的所有数据都会产生大量不必要的开销。
总结:
理想情况下,Consumers
会等待DB
更改,然后由DBMS
收到通知,最后读取所需数据并进行处理。
我的计划:
我想实现一种观察者模式。因此,每个消费者在完成数据处理后都会进入等待状态,并在DBMS
更改时通过DB
通知。 Consumer
可以订阅以从DBMS
接收通知事件。
现在我的问题是:是否有一种模式涵盖了这种情况?或者有人实施了半圆形设计,并为我提出了一些建议?
由于这更像是一个设计问题,我不太确定这是否重要,但我正在使用Java(JDK8
)。
非常感谢, FLO