Quel est le moyen recommandé d'attendre jusqu'à la Complétées avenir fils de finition

Je suis en utilisant CompletableFuture comme indiqué ci-dessous dans le code. Mais en ce qui concerne la façon dont je devrais attendre jusqu'à ce que tous runnables terminer, j'ai trouvé deux façons et je ne sais pas la différence entre eux et celui qui est le meilleur de la pratique? Ils sont comme suit:

Code:

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);

Première approche attendre jusqu'à ce que tous les runnables finition:

this.growSeedExecutor.shutdown();
this.growSeedExecutor.awaitTermination(1, TimeUnit.DAYS);

Deuxième approche attendre jusqu'à ce que tous les runnables finition:

CompletableFuture.allOf(this.growSeedFutureList).join();

S'il vous plaît laissez-moi savoir ce qui est recommandé.

Les deux fonctionnerait donc, cela dépend de ce que vous voulez faire avec l'exécuteur: si vous n'avez pas besoin de plus l'utilisation de l'ancienne - si vous voulez le réutiliser utiliser le dernier... Également dans votre premier extrait de code que vous gardez une référence à la dernière CompletableFuture...

OriginalL'auteur user2121 | 2015-06-08