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 |