Java における非同期リクエストの実装方法を教えてください。
Javaでは、非同期要求を実装するために、マルチスレッド、コールバック関数、またはFutureとCompletableFutureを使用できます。
- マルチスレッド: スレッドやExecutorServiceクラスを使用して、非同期でタスクを実行するスレッドを作成できます。たとえば:
new Thread(() -> {
// 异步任务的代码
}).start();
またはExecutorServiceクラスを使用して:
ExecutorService executor = Executors.newFixedThreadPool(10);
executor.submit(() -> {
// 异步任务的代码
});
executor.shutdown();
- コールバック関数:インターフェースを定義して、非同期タスクの結果をコールバック関数によって呼び出し元に渡すことができます。たとえば:
public interface AsyncCallback {
void onSuccess(Object result);
void onFailure(Throwable throwable);
}
public class AsyncRequest {
public void sendRequest(AsyncCallback callback) {
// 异步请求的代码
if (success) {
callback.onSuccess(result);
} else {
callback.onFailure(exception);
}
}
}
// 调用异步请求
AsyncRequest request = new AsyncRequest();
request.sendRequest(new AsyncCallback() {
@Override
public void onSuccess(Object result) {
// 处理请求成功的结果
}
@Override
public void onFailure(Throwable throwable) {
// 处理请求失败的异常
}
});
- FutureおよびCompletableFuture:FutureおよびCompletableFutureは、Javaで非同期タスクを処理するために利用できるクラスです。Futureは、非同期計算の結果を表し、get()メソッドで結果を取得できます。CompletableFutureはFutureの実装クラスで、非同期タスクの結果をコールバック関数で処理できます。例:
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步任务的代码
return result;
});
future.thenAccept(result -> {
// 处理异步任务的结果
});
future.exceptionally(throwable -> {
// 处理异步任务的异常
return null;
});
上記は Java で非同期リクエストを実現するためのいくつかの方法であり、具体的なニーズに応じて適切な方法を選択して非同期リクエストを実現することができます。