私はCompletableFuture
コードで以下に示すように使用しています。しかし、すべてのランナブルが終了するまで待つ方法については、2 つの方法を見つけましたが、それらの違いがわかりません。どちらがベスト プラクティスですか? それらは次のとおりです。
コード:
this.growSeedFutureList = CompletableFuture.runAsync(new GrowSeedSERun(this.saliencyMat, this.seedXY, this.seedVal), this.growSeedExecutor);
this.growSeedFutureList = CompletableFuture.runAsync(new GrowSeedNWRun(this.saliencyMat, this.seedXY, this.seedVal), this.growSeedExecutor);
this.growSeedFutureList = CompletableFuture.runAsync(new GrowSeedNERun(this.saliencyMat, this.seedXY, this.seedVal), this.growSeedExecutor);
this.growSeedFutureList = CompletableFuture.runAsync(new GrowSeedSWRun(this.saliencyMat, this.seedXY, this.seedVal), this.growSeedExecutor);
すべてのランナブルが終了するまで待機する最初のアプローチ:
this.growSeedExecutor.shutdown();
this.growSeedExecutor.awaitTermination(1, TimeUnit.DAYS);
すべてのランナブルが終了するまで待機する 2 番目のアプローチ:
CompletableFuture.allOf(this.growSeedFutureList).join();
どちらがオススメか教えてください。