Module 14: Concurrency and Multithreading
CompletableFuture in Depth
Compose async tasks, handle errors, and combine results with CompletableFuture.
Use supplyAsync, thenApply, thenCompose, thenCombine for pipelines.
Chain exceptionally and handle timeouts with orTimeout or completeOnTimeout.
Provide custom executors when running CPU-heavy tasks to avoid overloading common pools.