Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: asynchronous, completablefuture, parallel

Как параллельно запросить данные из 4 независимых систем? (например, через CompletableFuture)

Вопрос проверяет знание асинхронного программирования и использования CompletableFuture для параллельных запросов.

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

Используйте CompletableFuture.supplyAsync() для каждого запроса и объедините результаты через CompletableFuture.allOf().

Длинный ответ

Шаги для параллельных запросов:

  1. Создайте отдельный CompletableFuture для каждого запроса:

    CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> getDataFromSystem1());
    CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> getDataFromSystem2());
  2. Дождитесь завершения всех:

    CompletableFuture<Void> allFutures = CompletableFuture.allOf(future1, future2, future3, future4);
    allFutures.join(); // Блокирует поток, пока все не завершатся
  3. Получите результаты:

    String result1 = future1.join();
    String result2 = future2.join();

Пример:

List<CompletableFuture<String>> futures = List.of(
    CompletableFuture.supplyAsync(() -> fetchData("System1")),
    CompletableFuture.supplyAsync(() -> fetchData("System2"))
);

CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]))
    .thenRun(() -> futures.forEach(f -> System.out.println(f.join())));

Когда использовать:

  • Для независимых задач, которые можно выполнять параллельно.

  • Чтобы избежать блокировки основного потока.

Уровень

  • Рейтинг:

    1

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#asynchronous

#completablefuture

#parallel

Подпишись на Java Developer в телеграм