Java如何使用CompletableFuture编写并发程序
CompletableFuture 是 Java 8 引入的一个并发编程框架,用于简化异步编程和并发任务的处理。它提供了一组方法,可以用于管理异步任务的执行、结果的处理、任务的组合和异常的处理。 主要的方法有: 1. `runAsync(Runnable runnable)`:提交一个不返回结果的异步任务,返回一个 CompletableFuture 实例。 示例代码: ```java CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { // 异步任务的具体逻辑 }); ``` 2. `supplyAsync(Supplier<U> supplier)`:提交一个返回结果的异步任务,返回一个 CompletableFuture 实例。 示例代码: ```java CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> { // 异步任务的具体逻辑 return "Hello, World!"; }); ``` 3. `thenApply(Function<T, U> fn)`:当一个 CompletableFuture 完成后,可以对其结果进行转换。返回一个新的 CompletableFuture 实例。 示例代码: ```java CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> { // 异步任务的具体逻辑 return "Hello"; }).thenApply(result -> { // 对结果进行处理 return result + ", World!"; }); ``` 4. `thenAccept(Consumer<T> action)`:当一个 CompletableFuture 完成后,可以对其结果进行消费,但不返回结果。 示例代码: ```java CompletableFuture.supplyAsync(() -> { // 异步任务的具体逻辑 return "Hello"; }).thenAccept(result -> { // 对结果进行消费 System.out.println(result + ", World!"); }); ``` 5. `thenRun(Runnable action)`:当一个 CompletableFuture 完成后,可以执行一个操作,不关心前一个 CompletableFuture 的结果。 示例代码: ```java CompletableFuture.supplyAsync(() -> { // 异步任务的具体逻辑 return "Hello"; }).thenRun(() -> { // 执行操作 System.out.println("The task has completed."); }); ``` 如果你需要使用 CompletableFuture,只需在项目的 `pom.xml` 文件中添加以下 Maven 依赖: ```xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.11</version> </dependency> ``` 然后,你就可以在代码中使用 CompletableFuture 了。