import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExample {
public static void main(String[] args) {
// 创建一个CompletableFuture对象,它会在异步任务完成后返回结果
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 模拟一个耗时操作
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Hello, CompletableFuture!";
});
// 当future完成时,执行后续操作
future.thenAccept(result -> System.out.println("Result: " + result));
// 防止主线程提前结束
try {
future.get(); // 等待异步任务完成并获取结果
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
创建 CompletableFuture:
CompletableFuture.supplyAsync() 方法创建一个 CompletableFuture 对象。该方法接受一个 Supplier 函数式接口作为参数,并在另一个线程中异步执行该任务。supplyAsync 中的代码模拟了一个耗时 2 秒的操作,然后返回一个字符串 "Hello, CompletableFuture!"。处理完成后的结果:
thenAccept 方法来指定当 CompletableFuture 完成时要执行的操作。这里我们只是简单地将结果打印出来。等待任务完成:
future.get() 来阻塞当前线程,直到异步任务完成。这确保了主线程不会在异步任务完成之前退出。异常处理:
get() 方法会抛出 ExecutionException,因此我们在 try-catch 块中捕获并处理这些异常。这段代码展示了如何使用 CompletableFuture 来进行异步编程,并处理任务完成后的结果。
上一篇:java 有序map
下一篇:java 序列化
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站