编程老司机带你玩转 CompletableFuture 异步编程
本文从实例出发,介绍 CompletableFuture 基本用法。不过讲的再多,不如亲自上手练习一下。所以建议各位小伙伴看完,上机练习一把,快速掌握 CompletableFuture 。 个人博文地址: https://sourl.cn/s5MbCm 全文摘要: Future VS CompletableFuture CompletableFuture 基本用法 0x00. 前言 一些业务场景我们需要使用多线程异步执行任务,加快任务执行速度。 Java 提供 Runnable Future<V> 两个接口用来实现异步任务逻辑。 虽然 Future<V> 可以获取任务执行结果,但是获取方式十方不变。我们不得不使用 Future#get 阻塞调用线程,或者使用轮询方式判断 Future#isDone 任务是否结束,再获取结果。 这两种处理方式都不是很优雅,JDK8 之前并发类库没有提供相关的异步回调实现方式。没办法,我们只好借助第三方类库,如 Guava ,扩展 Future ,增加支持回调功能。相关代码如下: 虽然这种方式增强了 Java 异步编程能力,但是还是无法解决多个异步任务需要相互依赖的场景。 举一个生活上的例子,假如我们需要出去旅游,需要完成三个任务: 任务一:订购航班 任务二:订购酒店 任务三:订购租车服务 很显然任务一和任务二没有相关性,可以单独执行