反应堆根本没有反应

时间:2014-08-27 17:25:57

标签: reactor

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"));

@EDIT

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

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) {
}

1 个答案:

答案 0 :(得分:3)

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

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