Guest User

Untitled

a guest
Mar 20th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. private static final class PerThreadQueuedDispatcher extends Dispatcher {
  2.  
  3. private final ThreadLocal<Queue<Event>> queue =
  4. new ThreadLocal<Queue<Event>>() {
  5. @Override
  6. protected Queue<Event> initialValue() {
  7. return Queues.newArrayDeque();
  8. }
  9. };
  10.  
  11. @Override
  12. void dispatch(Object event, Iterator<Subscriber> subscribers) {
  13.  
  14. Queue<Event> queueForThread = queue.get();
  15. queueForThread.offer(new Event(event, subscribers));
  16.  
  17. Event nextEvent;
  18. while ((nextEvent = queueForThread.poll()) != null) {
  19. while (nextEvent.subscribers.hasNext()) {
  20. nextEvent.subscribers.next().dispatchEvent(nextEvent.event);
  21. }
  22. }
  23. }
Add Comment
Please, Sign In to add comment