ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
ListenableFuture<Integer> future = executorService.submit(() -> {
return 42;
});
Futures.addCallback(future, new FutureCallback<Integer>() {
public void onSuccess(Integer result) {
System.out.println("Task completed successfully. Result: " + result);
}
public void onFailure(Throwable t) {
System.out.println("Task failed with exception: " + t.getMessage());
}
});
executorService.shutdown();
ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
List<ListenableFuture<Integer>> futures = new ArrayList<>();
for (int i = 0; i < 10; i++) {
int finalI = i;
ListenableFuture<Integer> future = executorService.submit(() -> {
return finalI * 2;
});
futures.add(future);
}
ListenableFuture<List<Integer>> combinedFuture = Futures.allAsList(futures);
Futures.addCallback(combinedFuture, new FutureCallback<List<Integer>>() {
public void onSuccess(List<Integer> result) {
System.out.println("All tasks completed successfully. Results: " + result);
}
public void onFailure(Throwable t) {
System.out.println("At least one task failed with exception: " + t.getMessage());
}
});
executorService.shutdown();
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1-jre</version>
</dependency>