Supposons que j'ai le code suivant:
CompletableFuture<Integer> future
= CompletableFuture.supplyAsync( () -> 0);
thenApply
cas:
future.thenApply( x -> x + 1 )
.thenApply( x -> x + 1 )
.thenAccept( x -> System.out.println(x));
Ici, la sortie sera de 2. Maintenant, dans le cas d' thenApplyAsync
:
future.thenApplyAsync( x -> x + 1 ) // first step
.thenApplyAsync( x -> x + 1 ) // second step
.thenAccept( x -> System.out.println(x)); // third step
J'ai lu dans ce blog que chaque thenApplyAsync
sont à exécuter dans un thread séparé et "en même temps" (c'est à dire suivant thenApplyAsyncs
commencé avant thenApplyAsyncs
finition), si oui, quel est l'argument d'entrée de la valeur de la deuxième étape, si la première étape n'est pas fini?
Où en sera le résultat de la première étape aller si pas pris par la deuxième étape? la troisième étape sera de prendre une étape du résultat?
Si la deuxième étape a attendre le résultat de la première étape, alors quel est le point de Async
?
Ici, x -> x + 1 est juste pour montrer le point, ce que je veux savoir, c'est dans les cas de très long temps de calcul.