我正在使用番石榴事件总线。我有一个类似服务器的对象,它应该一直在运行,监听要发布到 b us 的事件。所以在一个junit测试(MyObject是被测类)中,我在它自己的线程中创建它来模拟这个并防止阻塞:
@Test
public void test() {
EventBus eventBus = new EventBus();
Thread thread= new Thread() {
@Override
public void run()
{
logger.debug("Creating new thread");
MyObject myObject = new MyObject(eventBus);
}
};
thread.start();
...
}
一切都很好,myObject 是在它自己的线程 Thread1 中创建的。然后,我在测试中将事件发布到事件总线:
eventBus.post(triggerObject);
我发现的奇怪的事情是,我在 MyObject 类中订阅的方法中的所有操作/日志记录都再次在主线程中执行。myObject 等待来自某些其他部分的响应,这会阻止我的测试,因为它在主线程中。为什么会这样?EventBus 或 Java 线程是不是我做错了什么?