注意:CompletableFuture内线程池的线程是守护线程,所以主线程执行结束会自动结束

1. Future在执行结束后没法回调,调用get方法会被阻塞;CompletableFuture调用get方法获取结果也会被阻塞。

2. 但是CompletableFuture可以回调,可不通过get方法获取结果。

3. Future模式执行批量任务,在完成任务后要想执行其它任务得通过get方法获取结果,在依次遍历Future列表时,各个get方法依赖于Future列表顺序。

4. CompletableFuture模式通过回调可以得到执行结果,各自完成任务可以立即执行接下来的任务。

5. 通过实现CompletionStage接口,CompletableFuture对象可以级联地执行任务

6. 可以通过anyOf方法得到多个任务中首先完成任务的CompletableFuture对象

Future和CompletableFuture的区别和对比,以及Future主要的四个缺点——不能回调会阻塞、批量任务处理彼此依赖会阻塞、不能多个任务级联执行、得不到最先完成的任务相关推荐

  1. Future和CompletableFuture的用法和区别

    Future的用法 多线程场景时,一般是实现runnable接口,覆写run方法,返回值是void类型,因此这种情况下不需要线程的返回结果.  如果需要线程的返回结果,就需要用callable接口来代 ...

  2. Flink的异步I/O及Future和CompletableFuture

    1 概述   Flink在做流数据计算时,经常要外部系统进行交互,如Redis.Hive.HBase等等存储系统.系统间通信延迟是否会拖慢整个Flink作业,影响整体吞吐量和实时性.   如需要查询外 ...

  3. Future与CompletableFuture

    一.使用的场景 Java多线程的背景下,运行线程的时候可以有两种形式,一种是有返回值的一种是没有返回值的.当我们获取运行的线程的返回值需要结合Future来进行使用. 二. 传统Future Futu ...

  4. 并行编程-disruptor与Future(CompletableFuture 和 guava)场景比较

    Disruptor 是 LMAX 公司开发的高性能队列,用于解决内存队列的延迟问题. LMAX 基于 Disruptor 打造的系统单线程能支撑每秒 600 万订单,许多著名的开源项目也使用 Disr ...

  5. Struts1和Struts2的区别和对比(完整版)

    struts2不是struts1的升级,而是继承的webwork的血统,它吸收了struts1和webwork的优势. 先看struts的Action官方注释(struts1.3.8源代码) /** ...

  6. Struts1和Struts2的区别和对比(完整版)(转)

    Struts1和Struts2的区别和对比(完整版)(转) Struts1和Struts2的区别和对比: Action 类:  • Struts1要求Action类继承一个抽象基类.Struts1的一 ...

  7. 多线程创建方式 线程池、Future和CompletableFuture

    大家好,我是烤鸭: 今天说一下 多线程的几种创建方式及使用. 1. Thread 和 Runnable 继承 Thread 类 和实现 Runnable 接口.     这种就不举例子了. 2.线程池 ...

  8. Java中的Runnable、Callable、Future、FutureTask的区别与示例

    原文地址:http://blog.csdn.net/bboyfeiyu/article/details/24851847 --------------------------------------- ...

  9. python3异步task_并发,异步编程_Python中的asyncio模块中的Future和Task的区别?,并发,异步编程,python,asyncio - phpStudy...

    Python中的asyncio模块中的Future和Task的区别? 问题一 按照官方文档的描述,Task是Futrue的一个subclass,标准库中也分别提供了create_task和create ...

最新文章

  1. linux什么是实时调度,Linux中的实时调度
  2. 一文看懂Tomcat、Nginx和Apache的区别
  3. 迷茫与飞跃:9月开始,明确了研究方向,功力提升明显,成绩比较显著
  4. Android studio下将项目代码上传至github包括更新,同步,创建依赖
  5. @pathVariable 映射URL绑定的占位符
  6. vscode配置问题
  7. git ssh配置完后拉取代码_Git中SSH key配置秘钥生成和如何拉取代码
  8. 理解storm的ACKER机制原理
  9. ubuntu(20.04)+linux内核(5.17.3)的config文件
  10. 拦截图片代码 精易web浏览器_精易Web浏览器 UChk验证源码
  11. 地球引擎中级教程——地球引擎对象(含练习)
  12. 教您正确选择一款合适您的家用路由器
  13. C#圆形卡尺测量程序基于halcon
  14. 英特尔发布Xeon D-1600处理器:10nm工艺 性能提升40%
  15. 传感网应用开发(环境部署)
  16. SQL server 建表时的一些知识 常用的Sql函数
  17. 双12来临,解密淘宝小二都在用的“电商神器”——阿里云RPA(机器人流程自动化)
  18. google play支付提示“此版本的应用程序未配置为通过Google Play结算。有关详情,请访问帮助中心。”
  19. 【Deeplearning】暗影精灵3安装Windows10+Ubuntu18.04双系统及CUDA10.0配置
  20. 碳排放的计算有多个版本

热门文章

  1. 【整理】SAP 看板简介
  2. 【云ERP】SAP S/4 HANA CLOUD 采购订单处理基本操作
  3. ALV标准范例Demo汇总
  4. 【转】SAP中的FTP操作样例
  5. 查询删除的SAP销售订单
  6. 解决oracle连接很慢问题
  7. SAP ERP项目各模块设计重点
  8. SAP固定资产减值准备的处理方法
  9. 报告如何单独添加水印?永洪BIV9.2解锁版权保护新方式
  10. 平安智慧城市:与时代同行,坚定数字化之路