非同期呼び出しを実装するための Java の手法は何か
Javaにおける非同期で呼び出す方法としては、以下のようなものがあります。
- スレッドクラスを使用:新しいスレッドを作成することで非同期タスクを実行します。スレッドオブジェクトは、スレッドクラスを継承するかRunnableインターフェイスを実装して作成し、start()メソッドでスレッドを開始することができます。
Thread thread = new Thread(new Runnable() {
public void run() {
// 异步任务代码
}
});
thread.start();
- ExecutorServiceフレームワークを使用する: ExecutorServiceはJavaが提供するスレッドプールフレームワークで、submit()メソッドで非同期タスクを送信でき、Futureオブジェクトを返します。Futureのget()メソッドを呼び出すと、非同期タスクの実行結果を取得できます。
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(new Callable<String>() {
public String call() throws Exception {
// 异步任务代码
return "异步任务执行结果";
}
});
// 获取异步任务的执行结果
String result = future.get();
- CompletableFutureクラスの使用: CompletableFutureはJava 8で追加されたクラスで、非同期処理や非同期コードの記述を支援します。非同期のメソッドチェーンを利用することで、複雑な非同期処理を作成できます。
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步任务代码
return "异步任务执行结果";
});
future.thenAccept(result -> {
// 处理异步任务的执行结果
});
- 非同期処理の完了を待ち、コールバック関数呼び出しで結果を処理するには、コールバックインターフェイスを定義し、非同期タスクが完了したときにコールバック関数を呼び出すことができます。
public interface AsyncCallback {
void onSuccess(String result);
void onFailure(Throwable throwable);
}
public class AsyncClass {
public void asyncMethod(AsyncCallback callback) {
// 异步任务代码
String result = "异步任务执行结果";
callback.onSuccess(result);
}
}
public class MainClass {
public static void main(String[] args) {
AsyncClass asyncObj = new AsyncClass();
asyncObj.asyncMethod(new AsyncCallback() {
public void onSuccess(String result) {
// 处理异步任务的执行结果
}
public void onFailure(Throwable throwable) {
// 处理异步任务的异常情况
}
});
}
}
以上の方法は非同期呼び出しを実装する一般的な方法で、要件や状況に応じて適切な方法を選択できます。