【发布时间】:2014-07-19 13:48:42
【问题描述】:
我已经习惯了 C++/Qt 的信号概念(发射/收听),现在我正在用 Java 做一个需要某种数据发送/接收机制的项目。
我的需求是:
- 发出一个事件(带有一些数据)并让所有线程监听/捕捉它。
- 显然,鉴于之前的要求,能够侦听/捕获带有附加数据的信号。
这在 Java 中是否可行,如何实现? (我会欣赏一个小的可编译示例/链接)
【问题讨论】:
-
为什么不能使用观察者设计模式?您的应用程序中可能存在不符合观察者设计模式的特定要求,但除非我了解所有要求,否则我无法确定
-
@user3790568 因为我想广播信号,这不太适合观察者模式(除非我做了一些非常骇人听闻的事情,我宁愿避免)
-
也许您可以在空闲线程上使用 wait() 来等待 notifyAll()?这样,您可以检查是否有任何更改,然后在适当的情况下发出事件。不确定这对你来说是否是“hacky”。
标签: java multithreading events