/.metadata/.plugins/org.eclipse.core.resources/.history/85/c0b1157e6ca3001e1d98c762f0e1eac2

https://bitbucket.org/fixpoint/connexion · #! · 40 lines · 34 code · 6 blank · 0 comment · 0 complexity · a3388ad7b0b3e83a8c8410f830578b02 MD5 · raw file

  1. package info.reflectionsofmind.connexion.util;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.concurrent.BlockingQueue;
  5. import java.util.concurrent.Callable;
  6. import java.util.concurrent.Executors;
  7. import java.util.concurrent.Future;
  8. import java.util.concurrent.SynchronousQueue;
  9. public class Waiter<T>
  10. {
  11. private final List<BlockingQueue<T>> queues = new ArrayList<BlockingQueue<T>>();
  12. public Waiter()
  13. {
  14. }
  15. public void put(final T object)
  16. {
  17. for (final BlockingQueue<T> queue : this.queues)
  18. {
  19. queue.offer(object);
  20. }
  21. }
  22. public Future<T> get()
  23. {
  24. final BlockingQueue<T> queue = new SynchronousQueue<T>();
  25. this.queues.add(queue);
  26. return Executors.newSingleThreadExecutor().submit(new Callable<T>()
  27. {
  28. public T call() throws Exception
  29. {
  30. return queue.take();
  31. }
  32. });
  33. }
  34. }