To reprezentacja asynchronicznego obliczenia, które możesz składać (`thenApply/thenCompose`) bez blokowania. Typowa pułapka to zbyt wczesne `get()/join()` (zamiana na kod blokujący) albo brak obsługi wyjątków (`exceptionally/handle`).
CompletableFuture<Integer> result = CompletableFuture
.supplyAsync(() -> 40)
.thenApply(x -> x + 2)
.exceptionally(e -> 0);
System.out.println(result.join());