Future和CompletableFuture的区别和对比,以及Future主要的四个缺点——不能回调会阻塞、批量任务处理彼此依赖会阻塞、不能多个任务级联执行、得不到最先完成的任务
注意: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主要的四个缺点——不能回调会阻塞、批量任务处理彼此依赖会阻塞、不能多个任务级联执行、得不到最先完成的任务相关推荐
- Future和CompletableFuture的用法和区别
Future的用法 多线程场景时,一般是实现runnable接口,覆写run方法,返回值是void类型,因此这种情况下不需要线程的返回结果. 如果需要线程的返回结果,就需要用callable接口来代 ...
- Flink的异步I/O及Future和CompletableFuture
1 概述 Flink在做流数据计算时,经常要外部系统进行交互,如Redis.Hive.HBase等等存储系统.系统间通信延迟是否会拖慢整个Flink作业,影响整体吞吐量和实时性. 如需要查询外 ...
- Future与CompletableFuture
一.使用的场景 Java多线程的背景下,运行线程的时候可以有两种形式,一种是有返回值的一种是没有返回值的.当我们获取运行的线程的返回值需要结合Future来进行使用. 二. 传统Future Futu ...
- 并行编程-disruptor与Future(CompletableFuture 和 guava)场景比较
Disruptor 是 LMAX 公司开发的高性能队列,用于解决内存队列的延迟问题. LMAX 基于 Disruptor 打造的系统单线程能支撑每秒 600 万订单,许多著名的开源项目也使用 Disr ...
- Struts1和Struts2的区别和对比(完整版)
struts2不是struts1的升级,而是继承的webwork的血统,它吸收了struts1和webwork的优势. 先看struts的Action官方注释(struts1.3.8源代码) /** ...
- Struts1和Struts2的区别和对比(完整版)(转)
Struts1和Struts2的区别和对比(完整版)(转) Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一 ...
- 多线程创建方式 线程池、Future和CompletableFuture
大家好,我是烤鸭: 今天说一下 多线程的几种创建方式及使用. 1. Thread 和 Runnable 继承 Thread 类 和实现 Runnable 接口. 这种就不举例子了. 2.线程池 ...
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
原文地址:http://blog.csdn.net/bboyfeiyu/article/details/24851847 --------------------------------------- ...
- python3异步task_并发,异步编程_Python中的asyncio模块中的Future和Task的区别?,并发,异步编程,python,asyncio - phpStudy...
Python中的asyncio模块中的Future和Task的区别? 问题一 按照官方文档的描述,Task是Futrue的一个subclass,标准库中也分别提供了create_task和create ...
最新文章
- linux什么是实时调度,Linux中的实时调度
- 一文看懂Tomcat、Nginx和Apache的区别
- 迷茫与飞跃:9月开始,明确了研究方向,功力提升明显,成绩比较显著
- Android studio下将项目代码上传至github包括更新,同步,创建依赖
- @pathVariable 映射URL绑定的占位符
- vscode配置问题
- git ssh配置完后拉取代码_Git中SSH key配置秘钥生成和如何拉取代码
- 理解storm的ACKER机制原理
- ubuntu(20.04)+linux内核(5.17.3)的config文件
- 拦截图片代码 精易web浏览器_精易Web浏览器 UChk验证源码
- 地球引擎中级教程——地球引擎对象(含练习)
- 教您正确选择一款合适您的家用路由器
- C#圆形卡尺测量程序基于halcon
- 英特尔发布Xeon D-1600处理器:10nm工艺 性能提升40%
- 传感网应用开发(环境部署)
- SQL server 建表时的一些知识 常用的Sql函数
- 双12来临,解密淘宝小二都在用的“电商神器”——阿里云RPA(机器人流程自动化)
- google play支付提示“此版本的应用程序未配置为通过Google Play结算。有关详情,请访问帮助中心。”
- 【Deeplearning】暗影精灵3安装Windows10+Ubuntu18.04双系统及CUDA10.0配置
- 碳排放的计算有多个版本