Guava EventBus和Singleton:同步

时间:2014-08-15 14:18:19

标签: android synchronization guava android-guava

我对番石榴EventBus的工作原理有疑问。我的对象已注册到EventBus。在10秒的时间间隔内,消息被发送到它们,在那里处理完成并且我将对象中的一些变量与单例值进行比较。通过一些标准,我改变单例值。我在Guava文档中做了一些研究,但是我没有找到有关同步问题的任何信息。

这是正确的方法吗?

关于

2 个答案:

答案 0 :(得分:2)

只要您使用EventBus(而不是AsyncEventBus),总线就不会出现添加的同步问题。事件总线只是在同一个线程中立即执行订阅者。

只要你自己坚持使用单个线程,就没有多线程,也不需要任何同步。

答案 1 :(得分:1)

EventBus专为并发使用而构建

EventBus source code,第91行:

  

此类可以安全地同时使用。

我也关注并发性,因为doc没有提及。仔细阅读源代码后,看到此评论以及使用并发集合已经消除了我的担忧。

volatile

关于问题提到比较单例跨线程的变化值,您可能需要使用volatile关键字来保护访问,以保证当前值的可见性,而不是处理器核心中缓存的旧值。但这是一个常规的并发问题,与使用EventBus无关。