CompletableFuture框架

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中。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值