# CompletableFuture — एडवांस्ड जावा

Source: https://www.geekswithgeeks.com/hi/advanced-java/adv-completablefuture

> thenApply, thenCompose व thenCombine से नॉन-ब्लॉकिंग असिंक्रोनस पाइपलाइन जोड़ें, और exceptionally तथा handle से विफलताओं से उबरें।

## chain, combine, handle

`thenApply` रूपांतरण, `thenCompose` फ़्लैट-मैप, `thenCombine` जोड़ना, `exceptionally` विफलता से उबरना — बिना ब्लॉक किए।

```java
CompletableFuture
    .supplyAsync(() -> fetchUser(id), pool)
    .thenCompose(u -> loadOrdersAsync(u))
    .thenApply(this::summarise)
    .exceptionally(ex -> Summary.empty())
    .thenAccept(System.out::println);
```

## Async रूप और कई को जोड़ना

`thenApply` उसी थ्रेड पर चलता है जिसने future पूरा किया; `thenApplyAsync(fn, pool)` आपके पूल पर चलना सुनिश्चित करता है। `allOf(...)` सभी की प्रतीक्षा करता है, `anyOf(...)` पहले पूरे होने वाले की।
