Concurrency Средний

Объединение асинхронных операций в цепочки без блокировки с помощью CompletableFuture.

✕ Pre-Java 8
Future<String> future =
    executor.submit(this::fetchData);
String data = future.get(); // blocks
String result = transform(data);
✓ Java 8+
CompletableFuture.supplyAsync(
    this::fetchData
)
.thenApply(this::transform)
.thenAccept(IO::println);
Заметили проблему в этом коде? Сообщите нам.
🔗

Цепочки

Объединение асинхронных шагов в читаемый конвейер.

🚫

Без блокировок

Ни один поток не ждёт результатов впустую.

🛡️

Обработка ошибок

exceptionally() и handle() для надёжного восстановления после ошибок.

Старый подход
Блокирующий Future.get()
Современный подход
CompletableFuture
Начиная с JDK
8
Сложность
Средний
Цепочки CompletableFuture
Доступно

Широко доступно с JDK 8 (март 2014)

CompletableFuture позволяет строить неблокирующие асинхронные конвейеры. Операции объединяются с помощью thenApply, thenCompose, thenAccept. Ошибки обрабатываются через exceptionally(). Несколько Future можно комбинировать с allOf/anyOf.