在Java中,可以使用多種方法實現異步調用并獲取結果。這里,我將向您展示如何使用CompletableFuture和ExecutorService來實現異步調用并返回結果。
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class AsyncExample {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 創建一個異步任務
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
try {
// 模擬耗時操作
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "異步任務結果";
});
// 獲取異步任務的結果
String result = future.get();
System.out.println("異步任務返回的結果: " + result);
}
}
import java.util.concurrent.*;
public class AsyncExample {
public static void main(String[] args) {
// 創建一個固定大小的線程池
ExecutorService executorService = Executors.newFixedThreadPool(1);
// 提交一個異步任務
Future<String> future = 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創建了一個異步任務,并在任務完成后返回了結果。請注意,這些方法都是非阻塞的,您可以在等待結果的同時執行其他任務。