以下のコードに記載されている「CompletableFuture.runAsync」のそれぞれがいくつかの計算を行い、「CompletableFuture.runAsync」を呼び出すたびに結果を取得したいと考えています。つまり、「future0、future1、future2、future3」のそれぞれに、「CompletableFuture.runAsync」への各呼び出しの結果をそれぞれ含める必要があります
どうやってやるの。
*更新:
私の要件は、 CompletableFuture.runAsync への呼び出しごとに、いくつかの計算を行い、これらの値の ArrayList を返す必要があることです。CompletableFuture.runAsync への 4 回の呼び出しの後、返された ArrayLists でさらに計算を行いたいと思います。
コード:
if (this.laplaceImgList != null) {
if (!this.laplaceImgList.isEmpty()) {
if (this.laplaceImgList.size() == 3) {
//executor
ExecutorService orintMapExe;
CompletableFuture<Void> future0 = null;
CompletableFuture<Void> future1 = null;
CompletableFuture<Void> future2 = null;
CompletableFuture<Void> future3 = null;
orintMapExe = Executors.newFixedThreadPool(1);
future0 = CompletableFuture.runAsync(new orintMapRun(SysConsts.ORINT_DEG_ZERO , this.laplaceImgList), orintMapExe);
future1 = CompletableFuture.runAsync(new orintMapRun(SysConsts.ORINT_DEG_45 , this.laplaceImgList), orintMapExe);
future2 = CompletableFuture.runAsync(new orintMapRun(SysConsts.ORINT_DEG_90 , this.laplaceImgList), orintMapExe);
future2 = CompletableFuture.runAsync(new orintMapRun(SysConsts.ORINT_DEG_135 , this.laplaceImgList), orintMapExe);
CompletableFuture.allOf(future0,future1,future2,future3).join();//blocks the main thread till future0, and future1 finishes