CompletableFuture 解决了 Future 的什么问题?
先自己想一想,再看参考要点
参考要点
- Future 只能用 get() 阻塞等待结果,多个任务有依赖时要自己写等待逻辑
- CompletableFuture 可以注册回调,用 thenApply、thenCompose 串联,用 thenCombine 合并,用 exceptionally、handle 处理异常
- 带 Async 的方法不传线程池时在 ForkJoinPool.commonPool() 中执行(并行度小于 2 时每个任务新建一个线程),阻塞的 I/O 任务应传入自己的线程池