Wie wird die in JDK 8 eingeführte CompletableFuture
mit der von netty bereitgestellten io.netty.util.concurrent.Future
verglichen?
Netty-Dokumentation erwähnt das
JDK 8 fügt CompleableFuture hinzu, die etwas überlappt %Code% Ссылка
Die Fragen, auf die ich Antworten zu bekommen versuche, sind:
In Bezug auf die Ähnlichkeiten / Unterschiede konnte ich Folgendes aufstellen:
Ähnlichkeiten: Die grundlegende Ähnlichkeit ist, dass beide im Vergleich zur Java-Zukunft nicht blockierend sind. Beide Klassen verfügen über Methoden, um einen Listener in die Zukunft zu integrieren, Fehler und Erfolg der Aufgabe zu inspizieren und Ergebnisse von der Aufgabe zu erhalten.
Unterschiede:
io.netty.util.concurrent.Future
scheint eine viel reichhaltigere Schnittstelle zu haben für Dinge wie das Zusammenstellen mehrerer asynchroner Aktivitäten usw. Nettys CompletableFuture
erlaubt andererseits das Hinzufügen mehrerer Listener zum gleichen Future und erlaubt außerdem das Entfernen von Zuhörern.
Wenn wir uns diesen ganzen Absatz anschauen (besonders den ersten Satz)
Java macht manchmal Fortschritte, indem es Ideen übernimmt, die Konstrukte subsumieren zur Verfügung gestellt von Netty. Zum Beispiel fügt JDK 8 CompleableFuture hinzu etwas überlappt io.netty.util.concurrent.Future. In einem solchen Fall, Nettys Konstrukte bieten einen guten Migrationspfad für Sie; Wir werden aktualisieren Sie die API sorgfältig mit Blick auf die zukünftige Migration.
Was es im Grunde sagt ist, dass die Netty Future
und CompletableFuture
dasselbe Konzept sind, aber zu verschiedenen Zeiten von verschiedenen Leuten implementiert werden.
Netty hat ihre Zukunft gemacht, weil es in Java kein einziges gab, und sie wollten es nicht als eine Abhängigkeit von etwas wie Guice sehen. Aber jetzt, Java hat einen erstellt, und es ist verfügbar für den Einsatz.
Am Ende des Absatzes sagen sie im Grunde, dass die netty API in Zukunft Future
durch CompletableFuture
ersetzen kann.
Soweit Ähnlichkeiten / Unterschiede, sind sie beide nur eine von vielen Implementierungen des future / promise Musters. Verwenden Sie das Netty, wenn Sie netty api und netty verwenden, ansonsten verwenden Sie CompletableFuture
.
Tags und Links java java-8 netty nonblocking completable-future