Doug Lea大师携手CompletableFuture喜迎国庆(下)

简介: PS:最近是跳槽的高峰期,我连日加班好多天,整理出了包含16000 多道面试题的面试宝典,并且指北君也会持续更新这份面试宝典中的题目,希望它能帮助大家找到自己心仪的工作!【文末有领取方式】
3.3.2 applyToEither80.png

applyToEither(CompletionStage<? extends T> other, Function<? super T, U> fn)

当前调用的Stage或者参数中的other Stgae中任何一个正常完成,均执行给定的Function,并且使用之前相应的result作为输入值(当前调用的Stage结果优先级高于参数中的Stage),并返回CompletionStage。


3.3.3 thenCompose


81.png

只有一个Function参数,Function中的输入值T为当前Stage的结果,输出值为一个CompletionStage, 返回一个新的CompletionStage,

其余的方法同上。


3.3.4 thenCombine

这个方法是用到了 BiFunction

82.png

T,U为apply方法的第一个和第二个参数,R为返回值。

83.png

thenCombine(CompletionStage<? extends U> other,BiFunction<? super T,? super U,? extends V> fn)

这个方法和它的名称一样,就是合并两个Stage的结果。当前Stage的result,和参数中的other Stage的result作为参数中BiFunction的两个输入参数,最终返回一个新的CompletionStage。


3.3.5 handle
84.png

handle(BiFunction<? super T, Throwable, ? extends U> fn)

使用此Stage的Result作为一个参数,还有一个异常为参数,执行BiFunction,并将执行的结果作为返回的CompletableFuture的result。其与方法为异步执行方法。


3.4 主要参数为Consumer的方法


85.png

Consumer是一个只有输入参数,没有返回值的Lamada,其方法 void accept(T t), 即表示只有输入参数没有返回值。


3.4.1 thenAccept
86.pngthenAccept(Consumer<? super T> action)

看完了上面的几组方法,这个方法很容易就能明白,即当前Stage正常完成的情况下,将当前Stage的result作为参数,执行Consumer,并且返回一个没有resulet的CompletableFuture。


3.4.2 thenAccept


87.pngacceptEither(CompletionStage<? extends T> other, Consumer<? super T> action)

同上面带有Either的方法差不多,即当前Stage 或者参数中的Other Stgae正常完成后执行Comsumer,并且将Stage的result作为Comsumer的输入值,(同上,调用放的Stage的result优先级更高!)


3.4.3 thenAcceptBoth


88.png

thenAcceptBoth(CompletionStage<? extends U> other,  BiConsumer <? super T, ? super U> action)

同上,即需要两个Stage都正常完成才会去执行 BiConsumer。由于BiConsumer有两个输入值,则Stage的result分别为BiConsumer计算的输入值,最后返回一个不包含Result的CompletableFuture。


3.4.4 whenComplete
89.png

whenComplete(BiConsumer<? super T, ? super Throwable> action)

顾名思义,就是当前调用的stage完成的时候执行参数中的方法,并且返回包含同一个结果的CompletableFuture,如果有异常也会返回指定的异常。

总结

本篇为妹子讲了一下CompletableFuture的内容特点。相信聪明的美女同事已经比较熟悉CompleteableFuture的应用了!下期我们再来讲解CompletableFuture的使用场景以及应用示例。

面试大全包括:包括 Java 集合、JVM、多线程、并发编程、设计模式、SpringBoot、SpringCloud、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、CSS、Vue、React、JavaScript、Android 大数据、阿里巴巴等大厂面试题等、等技术栈!

领取方式:扫描下方公众号【Java技术指北】回复【006】即可获取

100.jpg
相关文章
Doug Lea大师携手CompletableFuture喜迎国庆(上)
PS:最近是跳槽的高峰期,我连日加班好多天,整理出了包含16000 多道面试题的面试宝典,并且指北君也会持续更新这份面试宝典中的题目,希望它能帮助大家找到自己心仪的工作!【文末有领取方式】
Doug Lea大师携手CompletableFuture喜迎国庆(上)
|
程序员 数据建模 算法
ACMer程序员智力拾遗
浏览网页偶得,遂记录下来,每天进步一点点……        博客园真是个不错的平台,今天我让师姐也注册了……        学会分享吧,孩子们…… 一、编程中无穷大量的设置        如果问题中各数据的范围明确,那么无穷大的设定不是问题,在不明确的情况下,很多程序员都取0x7fffffff作为无穷大,因为这是32-bit int的最大值。
823 0
|
算法 Java
华硕编程竞赛11月JAVA专场 C题太空遨游 题解
华硕编程竞赛11月JAVA专场 C题太空遨游 题解
|
9月前
|
安全 easyexcel 数据库
Doug Lea大师的佳作CopyOnWriteArrayList,用不好能坑死你!
【5月更文挑战第14天】Doug Lea大师的佳作CopyOnWriteArrayList,用不好能坑死你!
61 4
|
消息中间件 Dubbo Java
弯道超车!阿里高工最新产Java面试速通指南,直接当着面试官炫技
对于今年的金三银四好像和往年多了一些特殊的东西,比如裁员&降薪。。。。。 由于后台有很多小伙伴留言说这给他们面试中增加了很多压力!
|
8月前
|
C++ 容器
【C++航海王:追寻罗杰的编程之路】stack
【C++航海王:追寻罗杰的编程之路】stack
32 0
|
机器学习/深度学习 JavaScript 前端开发
哭了!2020图灵奖颁给编程的回忆——Jeff Dean 的编译启蒙书(下)
刚刚,2020年图灵奖揭晓!影响了数代人的「龙书」作者——阿尔佛雷德·艾侯 (Alfred Aho)和杰弗里·戴维·乌尔曼(Jeffrey David Ullman)获奖。
234 0
哭了!2020图灵奖颁给编程的回忆——Jeff Dean 的编译启蒙书(下)
|
算法 编译器 程序员
哭了!2020图灵奖颁给编程的回忆——Jeff Dean 的编译启蒙书(上)
刚刚,2020年图灵奖揭晓!影响了数代人的「龙书」作者——阿尔佛雷德·艾侯 (Alfred Aho)和杰弗里·戴维·乌尔曼(Jeffrey David Ullman)获奖。
246 0
哭了!2020图灵奖颁给编程的回忆——Jeff Dean 的编译启蒙书(上)
|
算法 Unix 编译器
哭了!2020图灵奖颁给编程的回忆——Jeff Dean 的编译启蒙书(中)
刚刚,2020年图灵奖揭晓!影响了数代人的「龙书」作者——阿尔佛雷德·艾侯 (Alfred Aho)和杰弗里·戴维·乌尔曼(Jeffrey David Ullman)获奖。
497 0
哭了!2020图灵奖颁给编程的回忆——Jeff Dean 的编译启蒙书(中)
|
人工智能 网络协议 SDN
牛客山东理工大学第四届新生赛思考与总结(C语言)
.AI 绘图是近期很流行的一种画图程序,它可以通过一些标签自动生成二次元图片,也可以给出图片来画新图片。每个标签可以通过花括号({})来设置权重,标签之间用逗号(,)分隔。
123 0

热门文章

最新文章