在Java中,可以通過多線程、回調接口、Future和CompletableFuture等方式來實現異步調用。
Thread thread = new Thread(() -> {
// 執行耗時操作
String result = longRunningOperation();
// 將結果發送給主線程
synchronized (lock) {
this.result = result;
lock.notify();
}
});
thread.start();
// 主線程等待結果
synchronized (lock) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(result);
public interface Callback {
void onComplete(String result);
}
public class LongRunningOperation {
public void execute(Callback callback) {
// 執行耗時操作
String result = longRunningOperation();
// 調用回調方法
callback.onComplete(result);
}
}
// 使用回調接口
LongRunningOperation operation = new LongRunningOperation();
operation.execute(result -> System.out.println(result));
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(() -> {
// 執行耗時操作
return longRunningOperation();
});
// 主線程繼續執行其他操作
// 獲取異步操作的結果
String result = future.get();
System.out.println(result);
executor.shutdown();
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 執行耗時操作
return longRunningOperation();
});
// 主線程繼續執行其他操作
// 異步操作完成后的處理
future.thenAccept(result -> System.out.println(result));
以上是幾種常見的實現異步調用的方式,根據具體的需求和場景選擇合適的方式進行異步編程。