03-CompletableFuture异步线程 扩展

本文深入介绍了Java并发编程中CompletableFuture的使用方法,包括runAsync、supplyAsync等基础方法,以及thenCompose、thenApply、thenAccept等组合操作。通过这些方法,可以灵活地处理异步任务的执行流程,实现任务的合并和异常处理。此外,还涵盖了CompletableFuture在处理多个任务并发执行时的各种策略,如applyToEither、acceptEither等,帮助开发者更高效地管理并发任务。

方法总结

方法

描述

场景

runAsync

用于开启一个异步线程,传入Runnable没有返回值

开启一个异步线程,同时不关注返回值

supplyAsync

用于开启一个异步线程,传入供给型函数式接口,有返回值

开启一个异步线程,同时关注返回结果

thenCompose

用于连接上一步的执行结果,继续处理,传入一个函数式接口,传入x,返回y

用于继续处理上一步线程执行的结果(还是上面的线程去执行)关注返回结果

thenComposeAsync

..

用于继续处理上一步线程执行的结果(开启新的线程去执行)关注返回结果

thenApply

对上一步的返回结果做后续处理,传入一个函数式接口,传入x,返回y

对上一步的返回结果做后续处理(还是上面的线程去执行)关注返回结果

thenApplyAsync

..

对上一步的返回结果做后续处理(开启新的线程去执行)关注返回结果

thenAccept

对上一步的结果做后续处理,传入一个消费型接口,传入x

对上一步的结果做后续处理(还是上面的线程去执行)不关注返回结果

thenAcceptAsync

..

对上一步的结果做后续处理(开启新的线程去执行)不关注返回结果

thenRun

执行一个任务,传入一个Runnable接口

执行一个线程任务(还是上面的线程去执行),没有入参,没有返回值

thenRunAsync

..

执行一个线程任务(开启新的线程去执行),没有入参,没有返回值

thenCombine

用于合并两个线程的返回值,第一个参数就是(第二个线程任务),第二个参数是传入一个函数式接口,传入x,y 返回z

用于线程任务合并(还是上面的线程去执行),关注返回值

thenCombineAsycn

..

用于线程任务合并(开启新的线程去执行),关注返回值

thenAcceptBoth

用于合并两个线程的返回值,第一个参数就是(第二个线程任务),第二个参数是传入一个函数式接口,传入x,y

用于线程任务合并(还是上面的线程去执行),不关注返回值

thenAcceptBothAsync

..

用于线程任务合并(开启新的线程去执行),不关注返回值

runAfterBoth

用于合并两个线程的返回值,第一个参数就是(第二个线程任务),第二个参数是传入一个Runnable接口

用于线程任务合并(还是上面的线程去执行),没有入参,不关注返回值

runAfterBothAsync

..

用于线程任务合并(开启新的线程去执行),没有入参,不关注返回值

applyToEither

用于处理两个线程那个优先完成,第一个参数就是(第二个线程任务),第二个参数是一个函数式接口,传入x,返回y

用于处理两个线程那个优先完成就用那个的返回值(还是上面的线程去执行),传入的x就是优先线程返回的结果,关注返回值

applyToEitherAsync

..

用于处理两个线程那个优先完成就用那个的返回值(开启新的线程去执行),传入的x就是优先线程返回的结果,关注返回值

acceptEither

用于处理两个线程那个优先完成,第一个参数就是(第二个线程任务),第二个参数是一个消费型接口,传入x

用于处理两个线程那个优先完成就用那个的返回值(还是上面的线程去执行),传入的x就是优先线程返回的结果,不关注返回值

acceptEitherAsync

..

用于处理两个线程那个优先完成就用那个的返回值(开启新的线程去执行),传入的x就是优先线程返回的结果,不关注返回值

runAfterEither

用于处理两个线程那个优先完成,第一个参数就是(第二个线程任务),第二个参数是一个Runnable接口

用于处理两个线程那个优先完成就用那个的返回值(还是上面的线程去执行),没有入参,不关注返回值

runAfterEitherAsync

..

用于处理两个线程那个优先完成就用那个的返回值(开启新的线程去执行),没有入参,不关注返回值

exceptionally

处理上面运行中的异常,传入一个函数式接口,传入exception, 返回y

用于处理调用异常的情况, 入参是报错的异常, 关注返回值

handle

处理正常或异常的情况,传入一个函数式接口,第一个参数是正常结果(如果没异常),第二个参数是异常对象(如果有异常),返回y

用于处理无论正常和异常都要走的情况(还是上面的线程), 关注返回值

handleAsync

..

用于处理无论正常和异常都要走的情况(开启新的线程), 关注返回值

whenComplete

处理正常或异常的情况,传入一个函数式接口,第一个参数是正常结果(如果没异常),第二个参数是异常对象(如果有异常)

用于处理无论正常和异常都要走的情况(还是上面的线程), 不关注返回值

whenCompleteAsync

..

用于处理无论正常和异常都要走的情况(开启新的线程), 不关注返回值

join

用于获取返回结果

有返回结果

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值