Guava中EventBus并发处理事件

之前在公司一直使用的是框架封装好的eventbus工具类,底层是这么实现的

    public EventDispatcher(Integer threadCount) {
        eventBus = new AsyncEventBus(Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()+1));
    }


然后每个事件的订阅直接用@Subsribe 这么用的。

最近本机写了个程序,使用到了EventBus,用法和上述类似,但是发现效果却和想象中的不一样,我理解的异步事件分发是指1发送事件可以异步、并发 2消费事件同样异步(即事件的订阅方是基于线程池的能力进行事件的并发处理,而不是排队处理),但是测试结果就是订阅方订阅处理事件是排队进行的,即事件处理是阻塞进行的

上网查了一下,发下有个注解@AllowConcurrentEvents,看名字就知道是允许并发事件,加在了订阅方,果然有效果,处理事件改为并发执行了!


你可能感兴趣的:(Guava中EventBus并发处理事件)