在Java中,可以使用多种方法实现异步调用并获取结果。这里,我将向您展示如何使用CompletableFuture和ExecutorService来实现异步调用并返回结果。
- 使用CompletableFuture:
import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; public class AsyncExample { public static void main(String[] args) throws ExecutionException, InterruptedException { // 创建一个异步任务 CompletableFuturefuture = CompletableFuture.supplyAsync(() -> { try { // 模拟耗时操作 Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } return "异步任务结果"; }); // 获取异步任务的结果 String result = future.get(); System.out.println("异步任务返回的结果: " + result); } }
- 使用ExecutorService:
import java.util.concurrent.*; public class AsyncExample { public static void main(String[] args) { // 创建一个固定大小的线程池 ExecutorService executorService = Executors.newFixedThreadPool(1); // 提交一个异步任务 Futurefuture = executorService.submit(() -> { try { // 模拟耗时操作 Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } return "异步任务结果"; }); // 获取异步任务的结果 try { String result = future.get(); System.out.println("异步任务返回的结果: " + result); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } finally { // 关闭线程池 executorService.shutdown(); } } }
在这两个示例中,我们分别使用CompletableFuture和ExecutorService创建了一个异步任务,并在任务完成后返回了结果。请注意,这些方法都是非阻塞的,您可以在等待结果的同时执行其他任务。