开发者社区> kunfire> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

CompletableFuture

简介: CompletableFuture
+关注继续查看

CompletableFuture为什么出现

Future的get() 方法在计算完成之前会一直处在阻塞状态下,isDone() 方法容易耗费cpu资源,对于真正的异步处理,我们希望可以传入回调函数,在furue结束的时候自动调用改回调函数,这样我们就不用等待结果。

阻塞的方式和异步编程的设计理念是违背,而轮询的方式会耗费无谓的cpu资源 。因此JDK8设计出CompletableFuture。CompletableFuture提供了一种观察者模式类似的机制,可以让任务执行完成后通知监听的一方。

image.png

image.png

image.png

CompletionStage

  • CompletionStage代表异步计算过程中的某一个阶段,一个阶段完成后可能会触发另外一个阶段
  • 一个阶段的计算执行可以是一个Fuction,Consumer或者Runnable。比如:

stage.thenApply(x->square(x)).thenAccept(x->System.out.print(x)).thenRun(()->System.out.print())

  • 一个阶段的执行可能是被单个阶段完成后触发,也可能是由多个阶段一起触发。

代表异步计算过程中的某一个阶段,一个阶段完成后可能触发另外一个阶段,有点类似Linux系统的管道 分隔符参数。

CompletableFuture

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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
CompletableFuture之灭霸的故事
CompletableFuture之灭霸的故事
65 0
把之前CompletableFuture留下的坑给填上。 (中)
把之前CompletableFuture留下的坑给填上。 (中)
75 0
把之前CompletableFuture留下的坑给填上。 (下)
把之前CompletableFuture留下的坑给填上。 (下)
125 0
多线程之 completableFuture
Callable与Runnable的功能大致相似,但是call()函数有返回值. Callable一般是和ExecutorService配合来使用的
69 0
Java CompletableFuture(1)
Java CompletableFuture(1) private Long longTimeWork() { try { //模拟耗时操作,特意阻塞5秒。
826 0
Java8-CompletableFuture
import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; public class CompletableFuture1 { publi...
846 0
+关注
kunfire
sf
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载