J’ai ce type étrange CompletableFuture<CompletableFuture> mais je veux CompletableFuture . Est-ce possible? public Future convert(byte[] htmlBytes) { PhantomPdfMessage htmlMessage = new PhantomPdfMessage(); htmlMessage.setId(UUID.randomUUID()); htmlMessage.setTimestamp(new Date()); htmlMessage.setEncodedContent(Base64.getEncoder().encodeToSsortingng(htmlBytes)); CompletableFuture<CompletableFuture> thenApply = CompletableFuture.supplyAsync(this::getPhantom, threadPool).thenApply( worker -> worker.convert(htmlMessage).thenApply( pdfMessage -> Base64.getDecoder().decode(pdfMessage.getEncodedContent()) ) ); }
En Java 8, est-il préférable que l’interface ou la classe abstraite définisse des API renvoyant CompletableFuture au lieu de renvoyer Future ? Considérant qu’il s’agit d’une mauvaise conversion de Future en CompletableFuture et du fait que CompletableFuture donnera à l’appelant davantage de flexibilité pour utiliser directement un style fonctionnel, quelle pourrait être une bonne raison […]
Conditions préalables (description générique) : 1. champ de classe statique static List ids = new ArrayList(); 2. CompletableFuture#runAsync(Runnable runnable,Executor executor) appelée dans static void main(Ssortingng args[]) méthode static void main(Ssortingng args[]) 3. éléments ajoutés à someCollection dans l’appel runAsync à partir de l’ étape 2 Extrait de code (description spécifique) : private static List ids […]
Avec la nouvelle version de Java8, nous obtenons de très bonnes fonctionnalités pour les tâches asynchrones, par exemple CompletableFuture et .paralellStream (). Si vous utilisez ceci dans Java SE comme je l’ai compris, vous utiliserez ForkJoinPool, mais que se passe-t-il si j’exécute les exemples suivants dans Wildfly ou TomcatEE, par exemple? //Here I start a […]
Donc, considérant que j’ai l’exemple suivant: CompletionStage tokenFuture = getToken(); CompletionStage<CompletionStage<CompletionStage<CompletionStage>>> result = tokenFuture.thenApply(token -> { WSRequest request = ws.url(url).setHeader(“Authorization”, “Bearer ” + token); CompletionStage response = request.post(json); return response.thenApply(r -> { if (r.getStatus() == 201) { return CompletableFuture.supplyAsync(() -> CompletableFuture.supplyAsync(() -> true)); } else { return getToken().thenApply(t -> { WSRequest req = ws.url(url).setHeader(“Authorization”, “Bearer […]
J’essaie d’éviter d’imbriquer CompletableFuture lors de la combinaison de deux éléments indépendants avec une fonction BiFunction qui en renvoie un troisième. Actuellement, utiliser thenCombine() ne le coupe pas: // What I have public CompletableFuture<CompletableFuture> doStuff() { CompletableFuture aFuture = makeSomeA(); CompletableFuture bFuture = makeSomeB(); CompletableFuture<CompletableFuture> cFuture = aFuture.thenCombine(bFuture, this::makeSomeC); return cFuture; } // What I […]
Je reçois des réponses d’un appel de service via CompletableFuture. J’aimerais gérer certaines exceptions connues que le service renvoie, telles que les conflits de contrôle de concurrence optimistes. Voici ce que j’ai. Y a-t-il une meilleure façon de faire cela sans encapsuler les exceptions ni utiliser SneakyThrows? Les exceptions d’empaquetage signifieraient que d’autres gestionnaires d’exceptions […]
Comment CompletableFuture introduit dans la JDK 8 se compare-t-il à io.netty.util.concurrent.Future fourni par Netty? La documentation de Netty mentionne que JDK 8 ajoute CompletableFuture qui chevauche quelque peu io.netty.util.concurrent.Future http://netty.io/wiki/using-as-a-generic-library.html Les questions que j’essaie d’obtenir des réponses sont les suivantes: Quelles seraient leurs similitudes et leurs différences? Comment les caractéristiques de performance des deux diffèrent? […]
La Javadoc CompletionStage indique: […] si le calcul d’une étape se termine brusquement avec une exception ou une erreur (non contrôlée), alors toutes les étapes dépendantes nécessitant son achèvement se terminent exceptionnellement également, avec une exception CompletionException tenant l’exception comme cause. Étant donné que les achèvements exceptionnels encapsulent toujours les exceptions dans CompletionException pourquoi exceptionally() […]
J’ai le code suivant: // How to throw the ServerException? public void myFunc() throws ServerException{ // Some code CompletableFuture a = CompletableFuture.supplyAsync(() -> { try { return someObj.someFunc(); } catch(ServerException ex) { // throw ex; gives an error here. } })); // Some code } someFunc() lève une someFunc() ServerException . Je ne veux pas […]