CompletableFuture常见方法以及使用

常用场景:

1.并行执行多个任务CompletableFuture 可以用于并行执行多个任务,从而提高性能

2.并行执行多个任务CompletableFuture 可以用于并行执行多个任务,从而提高性能

3.任务依赖和组合CompletableFuture 允许您创建任务之间的依赖关系,以便在一个任务完成后执行另一个任务。

4.异常处理:您可以使用 CompletableFuture 来处理异步任务中可能出现的异常。

常用方法:

  1. supplyAsync(Supplier<U> supplier):创建一个异步任务,并返回一个 CompletableFuture,它将由 supplier 提供的结果作为计算结果。

  2. thenApply(Function<T, U> fn):对 CompletableFuture 的结果应用一个函数,返回一个新的 CompletableFuture

  3. thenCompose(Function<T, CompletableFuture<U>> fn):将两个 CompletableFuture 对象的结果组合在一起,产生一个新的 CompletableFuture

  4. exceptionally(Function<Throwable, T> fn):处理异常情况,返回一个默认值或另一个 CompletableFuture

  5. allOf(CompletableFuture<?>... cfs):等待多个 CompletableFuture 完成。

  6. anyOf(CompletableFuture<?>... cfs):等待任何一个 CompletableFuture 完成。

案例

  @Test
    public void testDemo(){
        CompletableFuture<Integer> future1 = CompletableFuture.supplyAsync(() -> {
            try {
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return 2;
        });

        CompletableFuture<Integer> future2 = CompletableFuture.supplyAsync(() -> 3);

        CompletableFuture<Integer> combinedFuture = future1.thenCombine(future2, (result1, result2) -> result1 + result2);

        combinedFuture.thenAccept(result -> System.out.println("Combined result: " + result));

        try {
            // 等待所有任务完成
            CompletableFuture.allOf(future1, future2, combinedFuture).get();
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
    }

 大牛链接:

CompletableFuture用法详解 - 知乎 (zhihu.com)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CompletableFutureJava 8引入的一个类,用于支持异步编程和处理异步任务的结果。它提供了一系列常用的方法来操作和组合异步任务。以下是CompletableFuture的一些常用方法: 1. `supplyAsync(Supplier<U> supplier)`:创建一个CompletableFuture对象,该对象会异步执行给定的Supplier任务,并返回计算结果。 2. `thenApply(Function<? super T,? extends U> function)`:对CompletableFuture的结果应用给定的函数,并返回一个新的CompletableFuture对象。 3. `thenAccept(Consumer<? super T> action)`:对CompletableFuture的结果应用给定的消费者函数,不返回任何结果。 4. `thenRun(Runnable action)`:在CompletableFuture完成后执行给定的Runnable任务。 5. `thenCompose(Function<? super T,? extends CompletionStage<U>> fn)`:将CompletableFuture的结果传递给给定的函数,并返回一个新的CompletableFuture对象。 6. `exceptionally(Function<Throwable,? extends T> fn)`:在CompletableFuture发生异常时,应用给定的函数处理异常,并返回一个新的CompletableFuture对象。 7. `handle(BiFunction<? super T,Throwable,? extends U> fn)`:对CompletableFuture的结果或异常应用给定的函数,并返回一个新的CompletableFuture对象。 8. `allOf(CompletableFuture<?>... cfs)`:等待所有给定的CompletableFuture对象完成后,返回一个新的CompletableFuture对象。 9. `anyOf(CompletableFuture<?>... cfs)`:等待任意一个给定的CompletableFuture对象完成后,返回一个新的CompletableFuture对象。 以上是CompletableFuture的一些常用方法,你可以根据具体的需求选择合适的方法来处理异步任务。如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值