blob: 6ccdf16266e786959583ef9e71ae1409ebedb0eb [file] [log] [blame]
// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package lambdas_jstyle_runnable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class RunnableRunner {
private ThreadPoolExecutor executor;
private List<Future> futures;
RunnableRunner() {
executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(2);
futures = new ArrayList<Future>();
}
void submit(Runnable runnable) {
futures.add(executor.submit(runnable));
}
int size() {
return executor.getActiveCount();
}
void waitFutures() {
Iterator<Future> it = futures.iterator();
try {
while (it.hasNext()) {
it.next().get(1, TimeUnit.MILLISECONDS);
}
} catch (Exception e) {
// Ignore for testing.
} finally {
while (it.hasNext()) {
try {
it.next().get();
} catch (Throwable t) {
// Ignore too.
}
}
executor.shutdownNow();
}
}
}