Можно запустить три CompletableFuture в заданном executor и дождаться CompletableFuture.allOf. Это барьер завершения, а не автоматическое объединение результатов или отмена остальных при первой ошибке.
Как в Java дождаться завершения трёх параллельных задач?
Можно запустить три CompletableFuture в заданном executor и дождаться CompletableFuture.allOf. Это барьер завершения, а не автоматическое объединение результатов или отмена остальных при первой ошибке.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Можно запустить три CompletableFuture в заданном executor и дождаться CompletableFuture.allOf. Это барьер завершения, а не автоматическое объединение результатов или отмена остальных при первой ошибке.
Пример с общим ограничением ожидания:
CompletableFuture<Void> all = CompletableFuture.allOf(f1, f2, f3);
all.get(10, TimeUnit.SECONDS);
Здесь f1–f3 уже запущены параллельно. Метод может выбросить TimeoutException, ExecutionException или InterruptedException; прерывание нельзя молча терять. Результаты получают из отдельных futures после успешного ожидания. Истечение timeout само по себе не останавливает задачи: нужен отдельный контракт отмены и timeout внешних операций.