为什么EventBus需要ThreadLocal用于EventWithHandler

时间:2013-11-28 09:26:46

标签: events event-handling guava

我很困惑为什么eventbus需要threadlocal?

  /** queues of events for the current thread to dispatch */
  private final ThreadLocal<Queue<EventWithHandler>> eventsToDispatch =
      new ThreadLocal<Queue<EventWithHandler>>() {
    @Override protected Queue<EventWithHandler> initialValue() {
      return new LinkedList<EventWithHandler>();
    }
  };

JUST FOR AsycEventBus覆盖方法enqueueEvent和dispatchQueuedEvents ??

1 个答案:

答案 0 :(得分:1)

它用于处理事件的重入发布 - 例如,如果一个事件订阅者发布了一个或多个其他事件,他们将进入队列。然后,在事件总线完成处理当前事件后,可以将这些事件发布给其订阅者