0

我在reactor-core 1.1.4-RELEASE下面尝试过,但没有打印出来。我应该错过什么?

Reactor reactor = Reactors.reactor(new Environment());
reactor.on(
        $("hello"),
        (Event<String> ev) -> System.out.println("hello "
                + ev.getData()));
reactor.notify("hello", Event.wrap("world"));

@编辑

下面的测试确认接收器守护线程可以在处理事件之前退出。

Reactor reactor = Reactors.reactor(new Environment());
reactor.on($("hello"), (Event<String> ev) -> {
    System.out.println(Thread.currentThread().getName());
    System.out.println(Thread.currentThread().isDaemon());
    System.out.println("hello " + ev.getData());
});
reactor.notify("hello", Event.wrap("world"));
try {
    Thread.sleep(1000);
} catch (Exception e) {
}
4

1 回答 1

3

如果这是您程序的范围,并且在处理事件之前没有任何东西可以阻止系统退出,那么您的通知将没有时间在系统简单退出之前完成。

您需要 aCountDownLatch或 aThread.sleep(1000)以允许系统时间将事件从一个线程传播到另一个线程。

于 2014-08-27T20:11:03.567 回答