Назад к вопросам
СБЕР
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);