CompletableFuture框架
CompletableFuture除了含有可以直接操作任务状态和结果的方法外,还实现了CompletionStage接口的一些方法。
当CompletableFuture任务完成后,同步使用任务执行线程来执行依赖任务结果的函数或者行为
所有异步的方法在没有显式指定Executor参数的情况下都是复用ForkJoinPool.commonPool()线程池来执行。
所有CompletionStage方法的实现都是相互独立的,以便一个方法的行为不会因为重载了其他方法而受影响。
一个CompletableFuture任务可能有一些依赖其计算结构的行为方法,这些方法被收集到一个无锁基于CAS操作来链接起来的链表组成的栈中。当CompletableFuture的计算任务完成后,会自动弹出栈中的行为方法并执行。由于是栈结构,在同一个CompletableFuture对象上行为注册的顺序与行为执行的顺序是相反的。
在执行时,分三种情况处理:
- 在创建相关依赖的CompletableFuture后,执行相关的action
- 第1步执行失败,则压入Treiber栈中,同下调用
- 第2步失败,则依赖CompletablFuture完成自动调用complete自发处理
1、类图
当涉及到多个步聚时,会通过创建Completion的子类,其中会包含上一步的CompletableFuture,以及当前步骤对应的CompletableFuture,将此Completion放入上一步的stack中。
三个步骤时结构如下图所示
CompletableFuture框架相关推荐
- 【JUC】第六章 Fork/Join 框架、CompletableFuture
第六章 Fork/Join 框架.CompletableFuture 文章目录 第六章 Fork/Join 框架.CompletableFuture 一.Fork/Join 框架 1.简介 2.For ...
- 推荐一款 Spring Boot 的 HTTP 客户端框架
欢迎关注方志朋的博客,回复"666"获面试宝典 在SpringBoot项目直接使用okhttp.httpClient或者RestTemplate发起HTTP请求,既繁琐又不方便统一 ...
- 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...
- Netty和RPC框架线程模型分析
<Netty 进阶之路>.<分布式服务框架原理与实践>作者李林锋深入剖析Netty和RPC框架线程模型.李林锋已在 InfoQ 上开设 Netty 专题持续出稿,感兴趣的同学可 ...
- 追源索骥:透过源码看懂Flink核心框架的执行流程
https://www.cnblogs.com/bethunebtj/p/9168274.html 追源索骥:透过源码看懂Flink核心框架的执行流程 前言 1.从 Hello,World WordC ...
- Netty 和 RPC 框架线程模型分析
https://www.infoq.cn/article/9Ib3hbKSgQaALj02-90y 1. 背景 1.1 线程模型的重要性 对于 RPC 框架而言,影响其性能指标的主要有三个要素: I/ ...
- Java 并发框架全览,这个牛逼!
来自:唐尤华 https://dzone.com/articles/a-birds-eye-view-on-java-concurrency-frameworks-1 1. 为什么要写这篇文章 几年前 ...
- 来,带你鸟瞰 Java 中的并发框架!
来自 ImportNew,作者:唐尤华 https://dzone.com/articles/a-birds-eye-view-on-java-concurrency-frameworks-1 1. ...
- JUC系列(十一) | Java 8 CompletableFuture 异步编程
多线程一直Java开发中的难点,也是面试中的常客,趁着还有时间,打算巩固一下JUC方面知识,我想机会随处可见,但始终都是留给有准备的人的,希望我们都能加油!!! 沉下去,再浮上来,我想我们会变的不一样 ...
最新文章
- pandas dataframe调整列的位置
- LSTM登顶20世纪AI论文高引No.1,NLP技术崛起!!!
- 如何搭建数据中台?行业AI独角兽:一手AI,一手Know-How
- 关于MYSQL中like 检索汉字问题。
- 业务数据全用上也喂不饱AI?试试这个小样本学习工具包
- 浙江大学PAT上机题解析之1010. 一元多项式求导 (25)
- 漫画:什么是字典序算法
- 前端学习(2573):vuex核心概念和底层原理
- 解密双十一小程序云背后毫秒级伸缩的Serverless计算平台:函数计算
- matlab 过度曝光,MATLAB:补偿图像处理中的过度曝光/过饱和度
- php 档案挂接,档案系统文件挂接简单处理思路
- 硬件开发学习需要掌握的基础知识
- Java高并发编程实战4,synchronized与Lock底层原理
- 一些常用开发软件下载地址-msdn.itellyou.cn
- 手把手教你:个人信贷违约预测模型
- The Innovation | 用系统生物学的观点鸟瞰肿瘤易感基因
- Python基于深度学习多标签分类模型实现云状识别
- layui搜索重置功能
- 每日 30 秒 ⏱ 漫游器法则
- 【无标题】灵遁者相观天下,相学培训书籍
热门文章
- 软件开发代码中各国语言对应的缩写
- 自己录制的Linux视频教程
- [导入]在ASP.NET+ORACLE添加数据记录并让ID自动增量
- python快速编程入门课后题答案-python语言程序设计基础(嵩天)第四章课后习题部分答案...
- 用python编写一个猜年龄的小程序-用Python来写一个男女相亲小程序|码农的情人节...
- python turtle循环图案-有趣的Python turtle绘图
- python画图哆啦a梦-Python—turtle画图(哆啦A梦)
- python游戏程序-python游戏程序
- python turtle画熊-基于turtle的Python作画
- python编程100例头条-python 简单爬取今日头条热点新闻(一)