50 private ExecutorService service = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
53 private BlockingQueue<Future<?>> pendingTasks =
new LinkedBlockingQueue<>();
62 while (pendingTasks.size() > 0) {
67 pendingTasks.take().get();
68 }
catch (InterruptedException e) {
74 public void awaitUntilFinished(
long timeout, TimeUnit timeUnit) {
76 service.awaitTermination(timeout, timeUnit);
77 }
catch (InterruptedException e) {
88 return pendingTasks.size();
92 public boolean awaitTermination(
long timeout, TimeUnit unit)
throws InterruptedException {
93 return service.awaitTermination(timeout, unit);
97 public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
throws InterruptedException {
98 List<Future<T>> futures = service.invokeAll(tasks);
99 for (Future<?> future : futures) {
100 pendingTasks.add(future);
106 public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
107 throws InterruptedException {
108 List<Future<T>> futures = service.invokeAll(tasks, timeout, unit);
109 for (Future<?> future : futures) {
110 pendingTasks.add(future);
116 public <T> T invokeAny(Collection<? extends Callable<T>> tasks)
throws InterruptedException, ExecutionException {
117 return service.invokeAny(tasks);
121 public <T> T invokeAny(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
122 throws InterruptedException, ExecutionException, TimeoutException {
123 return service.invokeAny(tasks, timeout, unit);
127 public boolean isShutdown() {
128 return service.isShutdown();
132 public boolean isTerminated() {
133 return service.isTerminated();
137 public void shutdown() {
142 public List<Runnable> shutdownNow() {
143 return service.shutdownNow();
147 public <T> Future<T> submit(Callable<T> task) {
148 Future<T> future = service.submit(task);
149 pendingTasks.add(future);
154 public Future<?> submit(Runnable task) {
155 Future<?> future = service.submit(task);
156 pendingTasks.add(future);
161 public <T> Future<T> submit(Runnable task, T result) {
162 Future<T> future = service.submit(task, result);
163 pendingTasks.add(future);
168 public void execute(Runnable command) {
169 service.execute(command);