Java fixed worker pool with error collection
Java
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public final class Pool {
public static <T> List<T> run(List<Callable<T>> tasks, int workers) throws Exception {
var pool = Executors.newFixedThreadPool(workers);
try {
List<Future<T>> futures = pool.invokeAll(tasks);
List<T> out = new ArrayList<>();
for (Future<T> f : futures) out.add(f.get());
return out;
} finally {
pool.shutdown();
}
}
}