Sobes.tech
Назад к вопросам
Senior
3

Расскажи про Future и CompletableFuture, в чём их отличие?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Future — это интерфейс, представляющий результат асинхронной операции, который может быть получен в будущем. Он позволяет проверить, завершена ли задача, отменить её и получить результат методом get(), который блокирует поток до готовности результата.

CompletableFuture — это расширение Future, реализующее интерфейс CompletionStage. Он поддерживает программирование в стиле реактивных цепочек, позволяя задавать последовательные и параллельные операции, которые выполняются после завершения асинхронной задачи, без блокировки.

Основные отличия:

  • Future не поддерживает функциональные операции и композицию.
  • CompletableFuture позволяет создавать цепочки обработки, комбинировать несколько асинхронных задач, обрабатывать исключения.
  • CompletableFuture можно явно завершить (complete), что полезно для ручного управления.

Пример использования CompletableFuture:

CompletableFuture.supplyAsync(() -> "Hello")
    .thenApply(s -> s + " World")
    .thenAccept(System.out::println);