J'ai une situation où j'ai besoin d'implémenter une récursivité avec CompletableFuture
. Je veux appeler recursionFuture(ex)
chaque fois que l'un des CompletableFuture
s renvoie n'importe quel résultat mais je ne suis pas sûr de savoir comment l'implémenter. Dans la situation actuelle, recursionFuture(ex)
est appelée uniquement lorsque future1
et future2
renvoient la sortie, puis si la condition est vérifiée. Toute aide serait appréciée.Comment procéder avec CompletableFuture sans attendre la sortie
public static void recursionFuture(ExecutorService ex)
{
try
{
CompletableFuture<Object> future1 = CompletableFuture.supplyAsync(() -> new ConcurrencyPoC_CompletableFuture().executeTask(), ex);
CompletableFuture<Object> future2 = CompletableFuture.supplyAsync(() -> new ConcurrencyPoC_CompletableFuture().executeTask(), ex);
if (future1.get() != null | future2.get() != null)
{
System.out.println("Future1: " + future1.get() + " Future2: " + future2.get());
recursionFuture(ex);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
Merci Andrew, cela fonctionne mais il y a un petit problème. en raison de la récursivité, le code continue même si le executeTask() ne renvoie rien et continue indéfiniment. Est-il possible de mettre une vérification sur la sortie du futur comme futire1.get()! = Null puis appel récursion mais avec le problème indiqué plus tôt se produit. Pouvez-vous conseiller ici s'il vous plaît. –
Eh bien, je suis arrivé ce travail par l'édition de code comme: CompletableFuture.anyOf (avenir1, avenir2) .thenRunAsync (() -> \t \t \t { \t \t \t \t recursionFuture (ex); \t \t \t} \t \t \t \t \t, ex); –