У меня есть несколько CompletableFuture
, и я хочу запустить их параллельно, ожидая первого, который возвращает обычно.
Я знаю, что могу использовать CompletableFuture.anyOf
, чтобы ждать возвращения первого, но это вернет обычно или исключительно. Я хочу игнорировать исключения.
List<CompletableFuture<?>> futures = names.stream().map(
(String name) ->
CompletableFuture.supplyAsync(
() ->
// this calling may throw exceptions.
new Task(name).run()
)
).collect(Collectors.toList());
//FIXME Can not ignore exceptionally returned takes.
Future any = CompletableFuture.anyOf(futures.toArray(new CompletableFuture<?>[]{}));
try {
logger.info(any.get().toString());
} catch (Exception e) {
e.printStackTrace();
}