Guava异步事件总线AsyncEventBus的注解AllowConcurrentEvents分析

Guava EventBus提供了一个异步版本的AsyncEventBus,允许并发事件处理。通过@Subscribe注解标识订阅者,@AllowConcurrentEvents注解用于指示订阅者方法是否线程安全。如果方法线程安全,添加此注解可以避免不必要的同步开销,提高性能。在非异步EventBus或线程安全的订阅者中,推荐使用@AllowConcurrentEvents注解。
摘要由CSDN通过智能技术生成

Guava提供了EventBus事件总线工具,可以很方便的创建观察者模式,基本使用请参考如下链接
http://www.cnblogs.com/peida/p/EventBus.html

在设置观察者时,需要使用注解类@Subscribe来标识一个订阅者,但在注解中还要一个注解@AllowConcurrentEvents,这个注解是用来标识当前订阅者是线程安全的,那Guava内部是如何实现的呢?

直接上代码:

 //AnnotatedSubscriberFinder.java
 public Multimap<Class<?>, EventSubscriber> findAllSubscribers(Object listener) {
    Multimap<Class<?>, EventSubscriber> methodsInListener = HashMultimap.create();
    Class<?> clazz = listener.getClass();
    for (Method method : getAnnotatedMethods(clazz)) {
      Class<?>[] parameterTypes = method.getParame
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值