【发布时间】:2014-08-18 20:23:33
【问题描述】:
我正在使用番石榴事件总线。我有一个类似服务器的对象,它应该一直在运行,监听要发布到总线的事件。所以在一个 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 线程是不是我做错了什么?
【问题讨论】:
标签: java multithreading guava event-bus