Future是Java 5添加的类,用来描述一个异步计算的结果。你可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,你也可以使用cancel方法停止任务的执行。

虽然Future以及相关使用方法提供了异步执行任务的能力,但是对于结果的获取却是很不方便,只能通过阻塞或者轮询的方式得到任务的结果。阻塞的方式显然和我们的异步编程的初衷相违背,轮询的方式又会耗费无谓的CPU资源,而且也不能及时地得到计算结果,为什么不能用观察者设计模式当计算结果完成及时通知监听者呢?

很多语言,比如Node.js,采用回调的方式实现异步编程。Java的一些框架,比如Netty,自己扩展了Java的 Future接口,提供了addListener等多个扩展方法;Google guava也提供了通用的扩展Future;Scala也提供了简单易用且功能强大的Future/Promise异步编程模式。

作为正统的Java类库,是不是应该做点什么,加强一下自身库的功能呢?

在Java 8中, 新增加了一个包含50个方法左右的类: CompletableFuture,提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,提供了函数式编程的能力,可以通过回调的方式处理计算结果,并且提供了转换和组合CompletableFuture的方法。

CompletableFuture类实现了Future接口,所以你还是可以像以前一样通过get方法阻塞或者轮询的方式获得结果,但是这种方式不推荐使用。

CompletableFuture和FutureTask同属于Future接口的实现类,都可以获取线程的执行结果。

CompletableFuture介绍相关推荐

  1. c++ 异步下获取线程执行结果_异步编排(CompletableFuture异步调用)

    1.问题背景 问题:当查询接口较复杂时候,数据的获取都需要远程调用,必然需要花费更多的时间. 假如查询文章详情页面,需要如下标注的时间才能完成: 那么,用户需要4s后才能统计的数据.很显然是不能接受的 ...

  2. 尚硅谷谷粒商城第十二天 商品详情页及异步编排

    1. 商品详情 当用户搜索到商品,肯定会点击查看,就会进入商品详情页,接下来我们完成商品详情页的展示. 商品详情浏览量比较大,并发高,我们会独立开启一个微服务,用来展示商品详情. 1.1. 创建mod ...

  3. 谷粒商城高级篇(38)——异步编排之商品详情查询

    异步编排之商品详情查询 异步编排 CompletableFuture介绍 创建异步对象 计算完成时回调方法 handle 方法 线程串行化方法 两任务组合 全部完成 一个完成即可 多任务组合 业务描述 ...

  4. 【谷粒商城】框架扩充篇(3/4)

    gitee个人代码:https://gitee.com/HanFerm/gulimall 笔记-基础篇-1(P1-P28):https://blog.csdn.net/hancoder/article ...

  5. CompletableFuture API用法介绍(二)

    文章目录 一.纯消费 API 1.thenAccep 2.thenAcceptBoth 3.runAfterBoth 4.thenRun(Runnable action) 二.组合API 1.then ...

  6. CompletableFuture API用法介绍(一)

    文章目录 一.前言 二.CompletableFuture 1.主动完成计算 2.创建异步任务 3.计算完成时对结果的处理 whenComplete/exceptionally/handle 4.结果 ...

  7. CompletableFuture:让你的代码免受阻塞之苦

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://juejin.cn/post/6844904024332828685 写在前面 通过阅读本篇文章你将了解到: ...

  8. 无语!你竟然连CompletableFuture都不知道,还天天说在jdk8原地踏步~

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://urlify.cn/ayaMBb 这篇文章介绍 Java 8 的 CompletionStage API和它的 ...

  9. 20个使用 Java CompletableFuture的例子

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 鸟窝 来源 | https://urlify.cn/ay ...

最新文章

  1. 释疑の手工凭证界面不显示页数
  2. 极限与连续知识点总结_高数上知识点期末复习 极限、连续、间断点(一)
  3. P4103-[HEOI2014]大工程【虚树,dp】
  4. 为了简单起见,Arquillian Chameleon
  5. arcgis坡度结果有误或z因子前有感叹号
  6. IoT -- (四) 物联网系统架构介绍
  7. 访问者(Visitor Pattern )模式
  8. php -l 检查文件是否语法错误
  9. 微博中的长链接与短链接
  10. 一篇文章带你认识数学建模中的数据拟合
  11. QQ空间照片回收站在哪里,QQ隐藏的一些功能
  12. 科技业10大错误决定
  13. linux vi命令不能用,linux vi命令的使用方法
  14. 安卓开发视频教程!十多家大厂Android面试真题锦集干货整理,写给正在求职的安卓开发
  15. node进程cpu 100%问题排查
  16. 一、HTML、HTTP、web综合问题
  17. 中文汉字翻译为相应的拼音
  18. 速锐得解码东风雪铁龙CAN网特点及休眠唤醒应用于驾培驾考
  19. 什么是链表php概念,链表 · PHP知识大纲 · 看云
  20. 基于深度信念网络的硬件模拟器研究(Matlab代码实现)

热门文章

  1. 《25项最优时间管理工具与技巧》
  2. ASP.NET+SQL创建存储过程
  3. 系统工具源码设计页面
  4. 3章-字符串类型操作
  5. flock - 必应词典
  6. Python基础---容器集合Set
  7. 学习c++的优秀博客(转)
  8. [deviceone开发]-do_QRCode的简单示例
  9. STL--lower_bound()upper_bound();
  10. ESFramework介绍之(30)―― 消息侦察者 INetMessageSpy