Java 异步调用实现方法:线程池、Future 和 CompletableFuture
Java 实现异步调用有多种方式,包括使用线程池、Future 和 CompletableFuture 等。
- 使用线程池
可以使用 Java 的线程池来实现异步调用。创建一个线程池后,将要执行的任务提交到线程池中,线程池会在后台执行任务,而主线程可以继续执行其他任务。
示例代码:
ExecutorService executor = Executors.newFixedThreadPool(10);
Future<String> future = executor.submit(() -> {
// 耗时操作
return 'result';
});
// 主线程继续执行其他任务
// 获取异步调用的结果
String result = future.get();
- 使用 Future
Java 中的 Future 是一个接口,它表示一个异步计算的结果。可以通过调用 Future 的 get 方法来获取异步计算的结果,get 方法会阻塞当前线程直到异步计算完成。
示例代码:
ExecutorService executor = Executors.newFixedThreadPool(10);
Future<String> future = executor.submit(() -> {
// 耗时操作
return 'result';
});
// 主线程继续执行其他任务
while (!future.isDone()) {
// 异步调用还未完成,可以执行其他任务
}
// 获取异步调用的结果
String result = future.get();
- 使用 CompletableFuture
CompletableFuture 是 Java 8 中新增的一个类,它提供了更加方便的异步编程方式。可以通过调用 CompletableFuture 的方法来实现异步调用,而不需要创建线程池或者调用 Future 的方法。
示例代码:
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 耗时操作
return 'result';
});
// 主线程继续执行其他任务
// 获取异步调用的结果
future.thenAccept(result -> {
// 处理异步调用的结果
});
原文地址: https://www.cveoy.top/t/topic/ovSE 著作权归作者所有。请勿转载和采集!