在Java线程中发送和接收事件

时间:2014-07-19 13:48:43

标签: java multithreading events

我已经习惯了C ++ / Qt的信号概念(发出/收听),现在我正在用Java做一个需要某种数据发送/接收机制的项目。

我的需求是:

  • 发出一个事件(包含一些数据)并让所有线程监听/捕获它。
  • 显然,根据之前的要求,能够使用附加数据监听/捕获信号。

这在Java中是否可行,以及如何实现? (我将会欣赏一个小的可编辑示例/链接)

2 个答案:

答案 0 :(得分:1)

默认情况下,Java没有简单的事件处理机制,例如.Net的事件或Qt的信号和插槽。它在各种java GUI框架中都有Listeners的概念,但我认为这不是你想要的。

您应该考虑像Google Guava's EventBus framework这样的pub-sub库。

如果您不想使用第三方库,我建议您开始考虑使用BlockingQueue的子类之一。请参阅FileCrawler example第62页的Java Concurrency in Practice,了解如何使用BlockingQueue将事件/数据发送到工作线程。

如果您正在寻找跨过程边界或本地机器边界的消息/事件通知的更复杂的解决方案,那么您可能需要查看:

答案 1 :(得分:0)