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