Java异步调用总结

本文详细介绍了Java中用于异步任务处理的方法,包括supplyAsync、runAsync、thenApply、thenApplyAsync、thenAccept、thenRun、exceptionally、whenComplete、handle以及thenCombine/thenAcceptBoth/runAfterBoth等。这些方法在并发编程中用于优化性能,管理任务执行顺序,以及异常处理。了解这些方法对于提升Java应用的并发性能至关重要。
supplyAsync创建带返回值的异步任务的
runAsync创建无返回值的异步任务
thenApply 将job2提交到线程池中异步执行,实际执行job2的线程可能是另外一个线程
thenApplyAsync由执行job1的线程立即执行job2,即两个job都是同一个线程执行的
thenAccept接收上一个任务的返回值作为参数,但是无返回值;
thenRun没有入参,也没有返回值
exceptionallyexceptionally方法指定某个任务执行异常时执行的回调方法,会将抛出异常作为参数传递到回调方法中,如果该任务正常执行则会exceptionally方法返回的CompletionStage的result就是该任务正常执行的结果
whenCompletewhenComplete是当某个任务执行完成后执行的回调方法,会将执行结果或者执行期间抛出的异常传递给回调方法,如果是正常执行则异常为null,回调方法对应的CompletableFuture的result和该任务一致,如果该任务正常执行,则get方法返回执行结果,如果是执行异常,则get方法抛出异常
handle跟whenComplete基本一致,区别在于handle的回调方法有返回值,且handle方法返回的CompletableFuture的result是回调方法的执行结果或者回调方法执行期间抛出的异常,与原始CompletableFuture的result无关了。
thenCombine/thenAcceptBoth/runAfterBoth这三个方法都是将两个CompletableFuture组合起来,只有这两个都正常执行完了才会执行某个任务,区别在于,thenCombine会将两个任务的执行结果作为方法入参传递到指定方法中,且该方法有返回值;thenAcceptBoth同样将两个任务的执行结果作为方法入参,但是无返回值;runAfterBoth没有入参,也没有返回值。注意两个任务中只要有一个执行异常,则将该异常信息作为指定任务的执行结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值