Как в Java дождаться завершения трёх параллельных задач?

Можно запустить три CompletableFuture в заданном executor и дождаться CompletableFuture.allOf. Это барьер завершения, а не автоматическое объединение результатов или отмена остальных при первой ошибке.

Короткий ответ

Что ответить на собеседовании

Можно запустить три 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 внешних операций.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее