CompletableFuture 详解

常用方法

  1. 依赖关系
  • thenApply() 把前面任务的执行结果,交给后面的Funcation
  • thenCompose() 用来连接两个有依赖关系的任务,结果由第二个任务返回
  1. and集合关系
  • thenCombine() 合并任务,有返回值
  • thenAcceptBoth() 两个任务执行完成后,将结果交给thenAcceptBoth处理,无返回值
  • runAfterBoth() 两个任务都执行完成后 ,执行下一步操作(Runnable任务类型)
  1. or聚合关系
  • applyToEither() 两个任务那个执行的快,就使用那一个结果,有返回值
  • acceptEither() 两个任务那个执行的快,就消费那一个结果,无返回值
  • runAfterEither() 任意一个任务执行完成,进行下一步操作(Runnable雷武类型)
  1. 并行执行
  • allof() 当所有给定的CompletableFuture 完成时,返回一个新的CompletableFuture
  • anyof() 当任意一个给定的CompletableFuture完成时,返回一个新的CompletableFuture
  1. 结果处理
  • whenComplete 当任务完成时,将使用结果(或者null)和此阶段的异常(或null如果没有)执行给定操作
  • exceptinally 返回一个新的CompletableFuture,当前面的CompletableFuture完成时,它也完成,当他异常完成时,给定函数的异常触发CompletableFuture的完成
  1. 获取CompletableFuture异步之后的返回值
  • 相同点
    1. join()和get()方法都是用来获取CompletableFuture异步之后的返回值
  • 区别
    1. join()方法抛出的是uncheck异常(即RuntimeException),不会强制开发者抛出,会将异常包装成CompletionException异常CancellationException异常,但是本质原因还是代码内存在的真正的异常
public static void main(String[] args) {
   
    CompletableFuture<Integer> f1 = CompletableFuture.supplyAsync(() -> {
   
        int i =1/0;
        return 1;
    });
    CompletableFuture.allOf(f1).join();
    System.out.println("CompletableFuture Test");
}
Exception in thread "main" java.util.concurrent.CompletionException: java.lang.ArithmeticException: / by zero
    at java
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值