CompletableFuture Composition
Compare CompletableFuture Composition with a common alternative (angle 5). How do you decide in a design review?
Answers use simple, clear English.
Quick interview answer
Baseline: supplyAsync runs async task; thenApply transforms; thenCompose flattens nested futures; allOf waits for batch. Exceptionally/handle for error paths.
Detailed answer
Baseline: supplyAsync runs async task; thenApply transforms; thenCompose flattens nested futures; allOf waits for batch. Exceptionally/handle for error paths. Prefer when pros dominate: Composable async without raw callbacks; integrates with thread pools.. Avoid when: Default ForkJoinPool.commonPool() shared — inject Executor for isolation.. Core: supplyAsync runs async task; thenApply transforms; thenCompose flattens nested futures; allOf waits for batch. Exceptionally/handle for error paths. Real-time example: Aggregate microservice responses: CompletableFuture.allOf(userF, ordersF).thenApply(...). Pros: Composable async without raw callbacks; integrates with thread pools. Cons: Default ForkJoinPool.commonPool() shared — inject Executor for isolation. Common mistakes: Blocking get() on async chain in request thread; lost exceptions without handle. Best practices: Specify executor for IO; use orTimeout/join with timeout in Java 9+. Audience level: Tech Lead.
Full explanation
supplyAsync runs async task; thenApply transforms; thenCompose flattens nested futures; allOf waits for batch. Exceptionally/handle for error paths.
Real example & use case
Aggregate microservice responses: CompletableFuture.allOf(userF, ordersF).thenApply(...).
Pros & cons
Pros: Composable async without raw callbacks; integrates with thread pools. Cons: Default ForkJoinPool.commonPool() shared — inject Executor for isolation.
Common mistakes
Blocking get() on async chain in request thread; lost exceptions without handle.
Best practices
Specify executor for IO; use orTimeout/join with timeout in Java 9+.
Follow-up questions
Only answered follow-ups are shown — click to open with full answers