Sobes.tech
Senior
44

Можеш ли да објасниш Future и CompletableFuture, у чему је њихова разлика?

Компаније где су питане
СБЕРСБЕР

Одговор од АИ

sobes.tech АИ

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

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

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

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

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

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