В какой момент происходит запуск асинхронной операции при использовании CompletableFuture в Java?

Запуск асинхронной операции в CompletableFuture в Java зависит от способа создания объекта:

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

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

Запуск асинхронной операции в CompletableFuture в Java зависит от способа создания объекта:

Подробный разбор

Ответ с пояснениями

Запуск асинхронной операции в CompletableFuture в Java зависит от способа создания объекта:

  • Если использовать методы вроде CompletableFuture.supplyAsync() или runAsync(), то асинхронная операция запускается сразу после вызова этих методов, обычно в отдельном потоке из пула.
  • Если создать CompletableFuture вручную и потом вызвать методы цепочки (thenApply, thenCompose и т.п.), то выполнение начнётся, когда будет вызван метод, инициирующий асинхронную работу (например, supplyAsync).

Таким образом, запуск происходит в момент создания CompletableFuture через асинхронные фабричные методы. Если же создаётся пустой CompletableFuture и потом вручную завершается, то операция запускается по вызову соответствующих методов.

Пример:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // Этот код запускается сразу в другом потоке
    return "result";
});

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

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

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

Подробнее