在 java 中,创建 completablefuture 的核心方法是调用其静态工厂方法。根据是否需要立即执行任务以及是否依赖外部数据,主要使用 supplyasync()、runasync() 和 completedfuture()。这些方法能分别处理有返回值、无返回值或已完成的异步场景。

如何创建带返回值的异步任务
要创建一个包含计算逻辑并返回结果的异步任务,应使用 CompletableFuture.supplyAsync()。该方法接收一个 Supplier 函数式接口,允许你在后台线程中执行代码并返回结果。如果不指定线程池,它将默认使用 ForkJoinPool.commonPool()。

import java.util.concurrent.CompletableFuture;
public class Main {
public static void main(String[] args) throws Exception {
// 创建带返回值的异步任务
CompletableFuture<string> future = CompletableFuture.supplyAsync(() -> {
return "Hello from Async";
});
// 获取结果(阻塞直到完成)
String result = future.get();
System.out.println(result);
}
}</string>
如何创建无返回值的异步任务
如果只需要执行一段逻辑而不需要返回任何值,可以使用 CompletableFuture.runAsync()。它接收一个 Runnable 接口,适合用于触发通知、日志记录等副作用操作。与 supplyAsync 类似,它也支持自定义线程池参数。

import java.util.concurrent.CompletableFuture;
public class Main {
public static void main(String[] args) throws Exception {
// 创建无返回值的异步任务
CompletableFuture<void> future = CompletableFuture.runAsync(() -> {
System.out.println("Task executed without return value");
});
// 等待任务完成
future.join();
}
}</void>
如何处理已完成的任务
对于已经知道结果且不需要异步计算的场景,可以直接使用 CompletableFuture.completedFuture() 创建一个已完成的任务。这在模拟测试或快速返回缓存数据时非常有用,因为它避免了不必要的线程调度开销。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











