CompletableFuture

1,111 阅读1分钟

在Java中异步编程,不一定非要使用rxJava, Java本身的库中的CompletableFuture可以很好的应对大部分的场景

CompletableFuture 基本用法

在Java8中,CompletableFuture提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通过回调的方式处理计算结果,也提供了转换和组合 CompletableFuture 的方法。 它可能代表一个明确完成的Future,也有可能代表一个完成阶段( CompletionStage ),它支持在计算完成以后触发一些函数或执行某些动作。 它实现了Future和CompletionStage接口

www.cnblogs.com/cjsblog/p/9…

20个使用 Java CompletableFuture的例子

colobu.com/2018/03/12/…

========================================================

理解产生的背景。知道可以做什么。然后需要用到时知道取找这个工具去实现功能。

API-->demo加深理解

最佳实践

事实上,如果每个操作都很简单的话(比如:上面的例子中按照id去查)没有必要用这种多线程异步的方式,因为创建线程还需要时间,还不如直接同步执行来得快。

事实证明,只有当每个操作很复杂需要花费相对很长的时间(比如,调用多个其它的系统的接口;比如,商品详情页面这种需要从多个系统中查数据显示的)的时候用CompletableFuture才合适,不然区别真的不大,还不如顺序同步执行。

设计到 CompletionStage 接口--> 入参又涉及到 Function

扩展

CompletionService -->ExecutorCompletionService 返回值是 Future