CompletableFuture原理是什么?

CompletableFuture是由Java 8引入的,在Java8之前我们一般通过Future实现异步。

  • Future用于表示异步计算的结果,只能通过阻塞或者轮询的方式获取结果,而且不支持设置回调方法,Java 8之前若要设置回调一般会使用guava的ListenableFuture,回调的引入又会导致臭名昭著的回调地狱
  • CompletableFuture对Future进行了扩展,可以通过设置回调的方式处理计算结果,同时也支持组合操作,支持进一步的编排,同时一定程度解决了回调地狱的问题。
图片[1]-CompletableFuture原理是什么?-编程社

因此,CompletableFuture的主要作用是弥补Future需要阻塞获取结果,CompletableFuture根据主任务执行结果自动执行依赖任务,无需阻塞主线程等待主任务执行完。

当然是在CompletableFuture这个操作定义是异步执行的,无需获取同步结果的前提下

CompletableFuture原理为:异步执行主任务,将依赖任务加入到链表中,主任务执行完从链表中获取依赖任务执行。

这时会有个疑问,依赖任务还没加入到链表中,主任务就执行完了,怎么办?

所以添加依赖任务的时候,会判断主任务是否执行完,如果执行完则立即执行依赖任务,不添加到链表中。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称

    暂无评论内容