Javaで非同期実行結果を取得の方法
JavaではFutureとCompletableFutureというクラスを使って非同期実行の結果を取得できます。
- 将来を使う
- 非同期処理を実行し、その結果を返すcall()メソッドを実装したCallableオブジェクトを定義する。
- CallableオブジェクトをExecutorServiceのsubmit()メソッドで実行し、Futureオブジェクトを返します。
- Futureオブジェクトのget()メソッドを呼び出すことで、非同期操作の結果を取得する。非同期操作がまだ完了していない場合、get()メソッドは非同期操作が完了するまでブロックする。
- マルチスレッド処理の例:
非同期処理を使って、結果を待つ。 - CompletableFutureを使用して
- CompletableFuture.supplyAsyncメソッドを使用して非同期操作を実行し、CompletableFuture objectを返します。
- CompletableFutureオブジェクトのgetメソッドを呼び出すことで、非同期処理の結果を取得できます。非同期処理が完了していない場合には、getメソッドは非同期処理完了までブロックされます。
- CompletableFuture future = CompletableFuture.supplyAsync(() -> {
// 非同期処理
return “非同期処理結果”;
});String result = future.get();
System.out.println(result);
これらメソッドはどちらも、非同期操作が完了して結果を返すまで、メインスレッドをブロックします。メインスレッドをブロックしたくない場合は、コールバック関数を使用するか、非同期操作の結果を処理するための CompletableFuture の他の手法を使用できます。