观察者设计模式多线程通信

时间:2012-12-18 10:47:10

标签: multithreading thread-safety observer-pattern

以下问题是一个抽象的问题,我很想听听有关问题的意见。

我的问题如下:

我有一个线程侦听数据源并将它们存储到缓存中。每次在缓存上添加某些内容时,观察者会将其选中并将其添加到HashMap中。我以前不知道我会得到多少饲料,但这个数字不是无限的。

此外,我的应用程序运行另一个线程,它正在进行一些处理,然后检索HashMap中的值。

我的问题是我真的不知道所有的值是否已经存储在HashMap中,所以我不能相互同步它们之间的两个线程,或者通知后来的线程存储所有feed的工作已经完成

流程类似于以下内容:

Thread-1 -> listens for data feeds -> cache data feeds -> cache observer -> HashMap

                                                                               ^
                                                                               |
Thread-2 -> starting execution at a random time and needs data from the      HashMap

我真的很想听听对这个问题的一些建议。上面要考虑的唯一棘手的事情是我真的不知道要存储在HashMap中的提要数量,因此我真的不能等待负责存储对象的其他线程的通知。

任何回应都表示赞赏。

1 个答案:

答案 0 :(得分:1)

完成预先录制的测试数据后,您无法使用Condition直接从Thread-2唤醒Thread-1吗?测试中的两个线程可以共享一个Condition对象(可能通过依赖注入)吗?