/.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
- package info.reflectionsofmind.connexion.util;
-
- import java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.BlockingQueue;
- import java.util.concurrent.Callable;
- import java.util.concurrent.Executors;
- import java.util.concurrent.Future;
- import java.util.concurrent.SynchronousQueue;
-
- public class Waiter<T>
- {
- private final List<BlockingQueue<T>> queues = new ArrayList<BlockingQueue<T>>();
-
- public Waiter()
- {
- }
-
- public void put(final T object)
- {
- for (final BlockingQueue<T> queue : this.queues)
- {
- queue.offer(object);
- }
- }
-
- public Future<T> get()
- {
- final BlockingQueue<T> queue = new SynchronousQueue<T>();
- this.queues.add(queue);
-
- return Executors.newSingleThreadExecutor().submit(new Callable<T>()
- {
- public T call() throws Exception
- {
- return queue.take();
- }
- });
- }
- }