Java 实现异步调用有多种方式,包括使用线程池、Future 和 CompletableFuture 等。

  1. 使用线程池

可以使用 Java 的线程池来实现异步调用。创建一个线程池后,将要执行的任务提交到线程池中,线程池会在后台执行任务,而主线程可以继续执行其他任务。

示例代码:

ExecutorService executor = Executors.newFixedThreadPool(10);
Future<String> future = executor.submit(() -> {
    // 耗时操作
    return 'result';
});
// 主线程继续执行其他任务
// 获取异步调用的结果
String result = future.get();
  1. 使用 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();
  1. 使用 CompletableFuture

CompletableFuture 是 Java 8 中新增的一个类,它提供了更加方便的异步编程方式。可以通过调用 CompletableFuture 的方法来实现异步调用,而不需要创建线程池或者调用 Future 的方法。

示例代码:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // 耗时操作
    return 'result';
});
// 主线程继续执行其他任务
// 获取异步调用的结果
future.thenAccept(result -> {
    // 处理异步调用的结果
});
Java 异步调用实现方法:线程池、Future 和 CompletableFuture

原文地址: https://www.cveoy.top/t/topic/ovSE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录