Ich habe mich bemüht, aber keinen Artikel oder Blog gefunden, der "listenablefuture" und "completablefuture" klar vergleicht und eine gute Analyse derselben liefert. Wenn mir also jemand einen solchen Blog oder Artikel erklären oder zeigen kann, wird es mir wirklich gut tun. DankeListenablefuture vs Completablefuture
Antwort
Sowohl ListenableFuture als auch CompletableFuture haben einen Vorteil gegenüber der Elternklasse Future, indem sie dem Anrufer erlauben, auf die eine oder andere Weise einen Callback zu "registrieren", wenn die Async-Aktion abgeschlossen ist.
Mit Zukunft Sie können dies tun:
ExecutorService executor = ...;
Future f = executor.submit(...);
f.get();
f.get() blockiert, bis die Asynchron-Aktion abgeschlossen ist;
Mit ListenableFuture Sie einen Rückruf wie folgt anmelden:
ListenableFuture listenable = service.submit(...);
Futures.addCallback(listenable, new FutureCallback<Object>() {
@Override
public void onSuccess(Object o) {
//handle on success
}
@Override
public void onFailure(Throwable throwable) {
//handle on failure
}
})
Mit CompletableFuture Sie auch einen Rückruf für, wenn die Aufgabe abgeschlossen registrieren kann, aber es unterscheidet sich von ListenableFuture dass es kann von jedem Thread abgeschlossen werden, der es vervollständigen möchte.
CompletableFuture completableFuture = new CompletableFuture();
completableFuture.whenComplete(new BiConsumer() {
@Override
public void accept(Object o, Object o2) {
//handle complete
}
}); // complete the task
completableFuture.complete(new Object())
Wenn ein Thread auf der Aufgabe abgeschlossen ruft erhielt der Wert von einem Anruf zu erhalten() mit dem Parameterwert gesetzt, wenn die Aufgabe nicht bereits abgeschlossen ist.
- 1. ForkJoinTask vs CompletableFuture
- 2. CompletableFuture supplyAsync
- 3. ListenableFuture zu scala Future
- 4. ListenableFuture zu scala Future
- 5. Typenkonflikt, wenn CompletableFuture Verlängerung
- 6. CompletableFuture von Callable?
- 7. Federmvc: der Unterschied zwischen DeferredResult und ListenableFuture?
- 8. Java8 CompletableFuture recoverWith Äquivalent? zB ausnahmsweise, aber zurück CompletableFuture <U>
- 9. CompletableFuture braucht mehr Zeit - Java 8
- 10. Unterbrechen der zugrunde liegenden Ausführung von CompletableFuture
- 11. Sollte ich CompletableFuture oder Future beim Definieren der API zurückgeben?
- 12. Überraschendes Verhalten von Java 8 CompletableFuture ausnahmsweise Methode
- 13. Netty: execute CompletableFuture Rückruf in I/O-Thread-Pool
- 14. wie man Java Future <V> in Guave konvertiert ListenableFuture <V>
- 15. Klasse vs Paket vs Modul vs Komponente vs Container vs Service vs Plattform in Java Welt
- 16. Opa vs Dart vs Haxe vs Coffee
- 17. Akkumulieren vs falten vs reduzieren vs komprimieren
- 18. body.scrollTop vs documentElement.scrollTop vs window.pagYOffset vs window.scrollY
- 19. ACE vs Boost vs Poco vs wxWidgets
- 20. Inline vs __inline vs __inline__ vs __forceinline?
- 21. Metaphon vs Levenshtein vs Soundex vs Hamming
- 22. Standort vs GeoPoint vs 1E6 vs Aufladen
- 23. VS 2013 MSTest vs nUnit vs xUnit
- 24. Exec vs ExecWait vs ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs ExecDos vs ExeCmd
- 25. SpiderMonkey vs JavaScriptCore vs?
- 26. & vs * und | vs +
- 27. Bundler vs RVM vs Gems vs RubyGems vs Gemsets vs System Ruby
- 28. Mathematica: Unevaluated vs Aufschieben vs Halten vs Holdform vs HoldAllComplete vs etc etc
- 29. ScheduledExecutorService vs Timer vs Handler
- 30. HttpRequest vs HttpRequestMessage vs HttpRequestBase
Mit anderen Worten ... ist ListenableFuture eine gut durchdachte saubere Schnittstelle, während CompletableFuture (und die CompletionStag Schnittstelle, da es 'toCompletableFuture' aussetzt) gefährlich ist, weil es' complete' Methoden verfügbar macht. Ein weiteres Beispiel für den nicht sehr gut durchdachten Müll, den wir von Oracle erwarten. –
'CompletionStage' wäre gut gewesen, wenn es' Future' erweitert und '' ComplectableFuture' 'nicht exponiert hätte. Und dann hätten sie dann etwas Sinnvolles nennen können, wie "ChainableFuture". –
'Future' und' ListenableFuture' sind Schnittstellen, während 'CompletableFuture' eine Klasse ist, die' Future' implementiert – cozyconemotel