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) {
}
答案 0 :(得分:3)
如果这是您的程序范围,并且在处理事件之前没有任何东西可以阻止系统退出,那么在系统退出之前您的通知将没有时间完成。
您需要CountDownLatch
或Thread.sleep(1000)
来允许系统时间将事件从一个线程传播到另一个线程。