Я использую шину событий guava. У меня есть объект, похожий на сервер, который должен работать все время, прослушивая события, которые будут отправлены в 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?