Concurrency Średniozaawansowany

Łącz operacje asynchroniczne bez blokowania, używając 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);
Widzisz problem z tym kodem? Daj nam znać.
🔗

Umożliwia łączenie operacji

Składasz kroki asynchroniczne w czytelny pipeline.

🚫

Bez blokowania

Żaden wątek nie czeka bezczynnie na wynik.

🛡️

Obsługa błędów

exceptionally() i handle() upraszczają odzyskiwanie po błędach.

Stare podejście
Blokujące Future.get()
Nowoczesne podejście
CompletableFuture
Od JDK
8
Poziom trudności
Średniozaawansowany
Łączenie CompletableFuture
Dostępne

Szeroko dostępne od JDK 8 (marzec 2014)

CompletableFuture pozwala budować nieblokujące asynchroniczne potoki. Łącz kroki przez thenApply, thenCompose i thenAccept. Błędy obsługuj przez exceptionally(). Wiele future można łączyć przez allOf/anyOf.

Udostępnij 𝕏 🦋 in