Sobes.tech
Senior

Erkläre bitte Future und CompletableFuture, worin besteht der Unterschied?

sobes.tech KI

Antwort von AI

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

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

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

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

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

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