");}}デバッグ用に必要の無いものがありますが気にしないでください。実にシンプルでいて合理的なように見えます。それでは動かしてみます。順番に処理されているのが解ります。メソッドの中のループ処理中にランダムなスリープを少し挟んでいるので気にしないでください。使って楽に高速化してみます。クラスを次のように変更します。両方の処理が終わってから計算値が大きい方を返す。両方の処理が終わってから計算値が大きい方を返す。");}}}見慣れないコードがありますね。CompletableFutureオブジェクトを生成します。非同期で処理させます。ドキュメントでは次のように説明されています。supplier)ForkJoinPool.commonPool()で実行されているタスクが指定されたサプライヤを呼び出して取得した値を使用して非同期的に完了する新しいCompletableFutureを返します。それでは次にこれらから得られる値の大きなほうが最終的な結果となります。実はこのプログラムはちょっと遊びが入っているので本来の目的だけを達成するには次のコードで完了させることができます。”);System.out.println(“プログラムを終了します。メソッドは実行されます。両方の処理が終わるまで待ってそれらを使って処理をして結果を返すようにしています。両方の処理が終わってから計算値が大きい方を返す。ドキュメントによると次のように説明されています。fn)このステージと指定された他のステージの両方が正常終了した際に実行される新しいCompletionStageを返します(実行時には、指定された関数の引数として2つの結果が使用される)。それでは先に進みましょう。このプログラムではさらに余計なことをしています。メソッドにタイムリミットを設定しました。メソッドを使いたかったからこうなっただけです。̄;)それではこのプログラムの実行結果を見てみましょう。使われて並行処理されているのが解ります。両方の処理が完了されてから最終的な処理もされているのが確認できます。使ってすることができました。(^_^)ただ、これでいいのか?それとももっと良い使い方があるのかは不明です。記事に注目していきましょう!ここからはおまけです。今回のプログラムでは両方の処理が完了するのを待ってました。先に終了した方を表示するだけの場合も試してみます。最終処理をこちらに変更します。これはどちらかが処理結果を得られれば、その結果を指定された関数に渡します。処理が早く終わった方を返す。ドキュメントでは次のように説明されています。fn)このステージまたは指定された他のステージが正常に完了したときに、対応する結果を指定された関数への引数に設定して実行される新しいCompletionStageを返します。それでは実行結果を見てみましょう。片方しか処理が終わってないのに最終処理がされているのが確認できます。方法があれば教えていただければ幸いです。