honesome
@honesome (honesome)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Java CompletableFutureについて

Q&A

Closed

JavaのCompletableFutureのthenCombineについて質問させてください

CompletableFutureのthenCombine使った下記の2つの例について質問があります。

例1

val a = CompletableFuture.supplyAsync {somethingHeavyProcess1()}
val b = CompletableFuture.supplyAsync {somethingHeavyProcess2()}
val conbinedResult = a.thenCombine(b){a, b -> someNextAction(a, b)}.join()

例2

val conbinedResult = CompletableFuture.supplyAsync {somethingHeavyProcess1()}
  .thenCombine(CompletableFuture.supplyAsync {somethingHeavyProcess2()}){ a, b -> someNextAction(a, b)}.join()

質問内容

(1).
CompletableFutureのsupplyAsyncやrunAsyncの中の処理は、変数宣言されている所に来たら、
実行されるのでしょうか?

例1でa,bの所に来たら、中の処理(somethingHeavyProcess)がその段階で別スレッドで実行されるかどうか。

(2).
(1)がその通りの場合、
例1はsomethingHeavyProcess1と2は並行で実行され、両方が完了したらsomeNextAction()が処理されるのに対し、例2はsomethingHeavyProcess1が終わってからsomethingHeavyProcess2が直列で処理されるようなイメージを抱いてしますが(javascriptのPromiseのthenのようなイメージ)、これは正しいでしょうか?

もしかしたら、例2はthenCombineではなくthenCombineAsyncを使うとそれぞれが並列で実行されるのでしょうか?

0

No Answers yet.

Your answer might help someone💌