Sobes.tech
Junior — Middle
104

Spiega le differenze tra le classi Future e CompletableFuture nel contesto della programmazione asincrona in Java.

Le aziende dove è stato chiesto
Демиус
ИннотехИннотех

Risposta dell'AI

sobes.tech AI

В Java интерфейс Future представляет собой результат асинхронной операции, который можно получить позже. Он позволяет проверить, завершена ли задача, отменить её и получить результат, блокируясь при необходимости.

CompletableFuture — это расширение Future, появившееся в Java 8, которое поддерживает более богатый функционал для асинхронного программирования. Главное отличие:

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

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

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

Таким образом, CompletableFuture — более мощный и гибкий инструмент для асинхронного программирования по сравнению с Future.