我已经习惯了C ++ / Qt的信号概念(发出/收听),现在我正在用Java做一个需要某种数据发送/接收机制的项目。
我的需求是:
这在Java中是否可行,以及如何实现? (我将会欣赏一个小的可编辑示例/链接)
答案 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)
不确定这是否与您的确切查询相符,但您是否尝试过CountDownLatch或CyclicBarrier?
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CyclicBarrier.html