// Java 异步编程示例使用 CompletableFuture
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class AsyncExample {
public static void main(String[] args) {
// 创建一个异步任务,使用 supplyAsync 方法
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 模拟耗时操作
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Hello, World!";
});
// 当异步任务完成时执行的动作
future.thenAccept(result -> {
System.out.println("Result: " + result);
});
// 为了确保主线程不会提前结束,这里等待异步任务完成
try {
future.get(); // 阻塞直到异步任务完成
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
CompletableFuture: 是 Java 8 引入的一个类,用于处理异步编程。它可以表示一个异步计算的结果,并提供了丰富的 API 来组合多个异步操作。
supplyAsync: 该方法用于创建一个异步任务,它会在线程池中执行,并返回一个 CompletableFuture
对象。这个方法接收一个 Supplier<T>
函数式接口作为参数,返回类型为 T
。
thenAccept: 当异步任务完成后,可以使用 thenAccept
方法来指定后续的操作。它接收一个 Consumer<T>
函数式接口作为参数,T
是前面异步任务的结果类型。
future.get(): 这是一个阻塞调用,等待异步任务完成并获取结果。在实际应用中,可能不需要阻塞主线程,可以根据需要选择是否使用。
Thread.sleep: 用于模拟耗时操作,比如网络请求或文件读写等。
通过这段代码,你可以看到如何使用 CompletableFuture
来实现简单的异步操作,并在任务完成后处理结果。
上一篇:java jna
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站