Java 8 solution with CompletableFuture :
public class FirstDoneWithCompletableFutureEx { public static void main(String[] args) throws ExecutionException, InterruptedException { int jobs = 10; CompletableFuture<?>[] futures = new CompletableFuture[jobs]; for (int i = 0; i < jobs; i++) { futures[i] = CompletableFuture.supplyAsync(() -> {
Java solution 5,6,7 with CompletionService :
public class FirstDoneWithCompletionServiceEx { public static void main(String[] args) throws InterruptedException, ExecutionException { int jobs = 10; ExecutorService executorService = Executors.newFixedThreadPool(jobs); CompletionService<Object> completionService = new ExecutorCompletionService<>(executorService); for (int i = 0; i < jobs; i++) completionService.submit( new Callable<Object>() { @Override public Object call() throws Exception {
source share