CompletableFuture除了含有可以直接操作任务状态和结果的方法外,还实现了CompletionStage接口的一些方法。

当CompletableFuture任务完成后,同步使用任务执行线程来执行依赖任务结果的函数或者行为

所有异步的方法在没有显式指定Executor参数的情况下都是复用ForkJoinPool.commonPool()线程池来执行。

所有CompletionStage方法的实现都是相互独立的,以便一个方法的行为不会因为重载了其他方法而受影响。

一个CompletableFuture任务可能有一些依赖其计算结构的行为方法,这些方法被收集到一个无锁基于CAS操作来链接起来的链表组成的栈中。当CompletableFuture的计算任务完成后,会自动弹出栈中的行为方法并执行。由于是栈结构,在同一个CompletableFuture对象上行为注册的顺序与行为执行的顺序是相反的。

在执行时,分三种情况处理:

  1. 在创建相关依赖的CompletableFuture后,执行相关的action
  2. 第1步执行失败,则压入Treiber栈中,同下调用
  3. 第2步失败,则依赖CompletablFuture完成自动调用complete自发处理

1、类图

当涉及到多个步聚时,会通过创建Completion的子类,其中会包含上一步的CompletableFuture,以及当前步骤对应的CompletableFuture,将此Completion放入上一步的stack中。

三个步骤时结构如下图所示

CompletableFuture框架相关推荐

  1. 【JUC】第六章 Fork/Join 框架、CompletableFuture

    第六章 Fork/Join 框架.CompletableFuture 文章目录 第六章 Fork/Join 框架.CompletableFuture 一.Fork/Join 框架 1.简介 2.For ...

  2. 推荐一款 Spring Boot 的 HTTP 客户端框架

    欢迎关注方志朋的博客,回复"666"获面试宝典 在SpringBoot项目直接使用okhttp.httpClient或者RestTemplate发起HTTP请求,既繁琐又不方便统一 ...

  3. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

  4. Netty和RPC框架线程模型分析

    <Netty 进阶之路>.<分布式服务框架原理与实践>作者李林锋深入剖析Netty和RPC框架线程模型.李林锋已在 InfoQ 上开设 Netty 专题持续出稿,感兴趣的同学可 ...

  5. 追源索骥:透过源码看懂Flink核心框架的执行流程

    https://www.cnblogs.com/bethunebtj/p/9168274.html 追源索骥:透过源码看懂Flink核心框架的执行流程 前言 1.从 Hello,World WordC ...

  6. Netty 和 RPC 框架线程模型分析

    https://www.infoq.cn/article/9Ib3hbKSgQaALj02-90y 1. 背景 1.1 线程模型的重要性 对于 RPC 框架而言,影响其性能指标的主要有三个要素: I/ ...

  7. Java 并发框架全览,这个牛逼!

    来自:唐尤华 https://dzone.com/articles/a-birds-eye-view-on-java-concurrency-frameworks-1 1. 为什么要写这篇文章 几年前 ...

  8. 来,带你鸟瞰 Java 中的并发框架!

    来自 ImportNew,作者:唐尤华 https://dzone.com/articles/a-birds-eye-view-on-java-concurrency-frameworks-1 1. ...

  9. JUC系列(十一) | Java 8 CompletableFuture 异步编程

    多线程一直Java开发中的难点,也是面试中的常客,趁着还有时间,打算巩固一下JUC方面知识,我想机会随处可见,但始终都是留给有准备的人的,希望我们都能加油!!! 沉下去,再浮上来,我想我们会变的不一样 ...

最新文章

  1. pandas dataframe调整列的位置
  2. LSTM登顶20世纪AI论文高引No.1,NLP技术崛起!!!
  3. 如何搭建数据中台?行业AI独角兽:一手AI,一手Know-How
  4. 关于MYSQL中like 检索汉字问题。
  5. 业务数据全用上也喂不饱AI?试试这个小样本学习工具包
  6. 浙江大学PAT上机题解析之1010. 一元多项式求导 (25)
  7. 漫画:什么是字典序算法
  8. 前端学习(2573):vuex核心概念和底层原理
  9. 解密双十一小程序云背后毫秒级伸缩的Serverless计算平台:函数计算
  10. matlab 过度曝光,MATLAB:补偿图像处理中的过度曝光/过饱和度
  11. php 档案挂接,档案系统文件挂接简单处理思路
  12. 硬件开发学习需要掌握的基础知识
  13. Java高并发编程实战4,synchronized与Lock底层原理
  14. 一些常用开发软件下载地址-msdn.itellyou.cn
  15. 手把手教你:个人信贷违约预测模型
  16. The Innovation | 用系统生物学的观点鸟瞰肿瘤易感基因
  17. Python基于深度学习多标签分类模型实现云状识别
  18. layui搜索重置功能
  19. 每日 30 秒 ⏱ 漫游器法则
  20. 【无标题】灵遁者相观天下,相学培训书籍

热门文章

  1. 软件开发代码中各国语言对应的缩写
  2. 自己录制的Linux视频教程
  3. [导入]在ASP.NET+ORACLE添加数据记录并让ID自动增量
  4. python快速编程入门课后题答案-python语言程序设计基础(嵩天)第四章课后习题部分答案...
  5. 用python编写一个猜年龄的小程序-用Python来写一个男女相亲小程序|码农的情人节...
  6. python turtle循环图案-有趣的Python turtle绘图
  7. python画图哆啦a梦-Python—turtle画图(哆啦A梦)
  8. python游戏程序-python游戏程序
  9. python turtle画熊-基于turtle的Python作画
  10. python编程100例头条-python 简单爬取今日头条热点新闻(一)