Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static final class PerThreadQueuedDispatcher extends Dispatcher {
- private final ThreadLocal<Queue<Event>> queue =
- new ThreadLocal<Queue<Event>>() {
- @Override
- protected Queue<Event> initialValue() {
- return Queues.newArrayDeque();
- }
- };
- @Override
- void dispatch(Object event, Iterator<Subscriber> subscribers) {
- Queue<Event> queueForThread = queue.get();
- queueForThread.offer(new Event(event, subscribers));
- Event nextEvent;
- while ((nextEvent = queueForThread.poll()) != null) {
- while (nextEvent.subscribers.hasNext()) {
- nextEvent.subscribers.next().dispatchEvent(nextEvent.event);
- }
- }
- }
Add Comment
Please, Sign In to add comment