Java的CompletableFuture是一个异步编程的工具,它提供了一种简单而强大的方式来编写并发代码。CompletableFuture类实现了Future接口,并且可以通过调用方法链来串联多个异步操作。

下面是一些使用CompletableFuture的示例:

  1. 创建一个CompletableFuture对象:
CompletableFuture<String> future = new CompletableFuture<>();
  1. 异步执行一个任务,并在任务完成时触发回调:
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // 执行一些耗时的任务
    return "Hello, world!";
});

future.thenAccept(result -> {
    // 处理任务的结果
    System.out.println(result);
});
  1. 组合多个CompletableFuture对象:
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> "Hello");
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "world");

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

combinedFuture.thenAccept(result -> {
    // 处理组合后的结果
    System.out.println(result);
});
  1. 异常处理:
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // 执行一些可能抛出异常的任务
    throw new RuntimeException("Task failed");
});

future.exceptionally(ex -> {
    // 处理任务的异常
    System.out.println("Task failed: " + ex.getMessage());
    return null;
});
  1. 等待所有CompletableFuture完成:
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> "Hello");
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "world");

CompletableFuture<Void> allFutures = CompletableFuture.allOf(future1, future2);

allFutures.thenRun(() -> {
    // 所有任务完成后的处理
    System.out.println("All tasks completed");
});

这只是CompletableFuture的一小部分功能,它还提供了很多其他有用的方法,如thenApply、thenCompose、thenAcceptBoth等等。使用CompletableFuture可以更加灵活地处理并发任务,并且可以通过方法链的方式清晰地表达任务之间的依赖关系

java CompletableFuture使用

原文地址: https://www.cveoy.top/t/topic/iQGk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录