Programing/Java

Guava Eventbus @AllowConcurrentEvents

BUST 2018. 10. 10. 22:27

Guava Eventbus @AllowConcurrentEvents

@Subscribe
@AllowConcurrentEvents
public void receive(String message) throws InterruptedException {
log.info("Receiving message... {}", message);
receiving(3, message);
log.info("Done");
}
  • @Subscribe 만 쓴 경우에는 synchronized로 감싸져서 호출이 되기 때문에 멀티 쓰레드에서 동시 호출이 막혀있다. 이는 성능에 엄청난 영향을 미치게 된다.
  • @Subscribe 매서드를 Thread-Safe하게 개발을 한뒤 @AllowConcurrentEvents를 붙어 주면 멀티 쓰레드 상황에서 문제없이 사용이 가능하다.
  • 특별한 경우가 아닌 경우네는 가능한 @AllowConcurrentEvents를 사용한다.


'Programing > Java' 카테고리의 다른 글

Jackson ObjectMapper  (0) 2018.10.25
Java Jdbc를 이용한 데이터베이스 접근하기  (0) 2018.10.23
CompletableFuture  (0) 2018.09.15
Guava Cache  (0) 2018.09.12
Singleton Pattern  (0) 2018.09.06