Java multithreading with Guava EventBus -


i using guava event bus. have server-like object supposed running time, listening events posted b us. in junit test (myobject class under test), create in own thread simulate , prevent blocking:

  @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();       ...   } 

all good, myobject created off in own thread, thread1. later, post event event bus in test:

eventbus.post(triggerobject); 

the weird thing finding actions/logging subscribed method inside of myobject class executing in main thread again. myobject waits responses other parts, , blocks test since it's in main thread. why happening? doing wrong eventbus or java threading?

well don't nothing in created thread except creating object ends in heap (which shared between threads), since reference not maintained after run, it's lost.

your @subscribe method myobject invoked in same thread calls eventbus.post(event); , not in thread created myobject.

the weird thing finding actions/logging subscribed method inside of myobject class executing in main thread again

if myobject class has @subscribe method, why need instance of eventbus inside constructor? want

myobject myobject = new myobject(); eventbus.register(myobject);` 

instead of myobject myobject = new myobject(eventbus);


Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -