Mit der Spring MVC können Controller DeferredResult
und ListenableFuture
(die von ListenableFutureTask
implementiert wird) eine asynchrone Antwort zurückgeben. Was ist der Unterschied? Wann sollte ich jeden von ihnen benutzen?Federmvc: der Unterschied zwischen DeferredResult und ListenableFuture?
Antwort
DeferredResult ist eine Alternative zu Callable, mit der Sie ein Ergebnis erzielen können. Sie können DeferredResult auch so erweitern, dass zusätzliche Daten oder Verhaltensweisen zugeordnet werden, falls Sie später auf einige Daten zugreifen müssen, ohne dass zusätzliche Datenstrukturen erforderlich sind. Aber das war es schon. ListenableFuture Future ist nützlich, wenn Sie Callbacks zu der asynchronen Task hinzufügen müssen. Guajavs ListenableFuture erlaubt tatsächlich die Komposition, die ich von Spring ListenableFuture nicht sehen kann. Dafür verwenden Sie lieber CompletableFuture, die auch von Spring unterstützt wird. Sie können Futures komponieren sehr einfach, check this out: http://www.deadcoderising.com/java8-writing-asynchronous-code-with-completablefuture/
Sie sich vom Konzept her ähnlich sind und austauschbar als Controller-Methode Ergebnis verwendet werden, dank ListenableFutureReturnValueHandler
, dass der zweite an den ersten anpasst.
jedoch beide DeferredResult
Klasse und ListenableFuture
Schnittstelle aus zwei verschiedenen Welten kommen:
- Erste aus
org.springframework.web.context.request.async
Paket hinzugefügt in der Version 3.2. - Sekunde von
org.springframework.util.concurrent
Paket verfügbar seit 4.0.
Darüber hinaus wurden sie für verschiedene Bedürfnisse hinzugefügt. Während der erste eine Basis- und vollständige Funktionalität für das asynchrone Bereitstellen des Controller-Ergebnisses bietet, ermöglicht der zweite zusätzlich, Ihre Implementierung mit bereits vorhandenen Klassen/Frameworks zu überbrücken, wie zum Beispiel ExecutorService
Framework (siehe ListenableFutureTask
).
Unterm Strich also, verwenden Sie die DeferredResult
Klasse, wenn es genug ist für Sie die weitere Verarbeitung zu implementieren, auf eigene Faust oderListenableFuture
, wenn Sie möchten, dass ExecutorService
-ähnlichen Frameworks verwenden.
- 1. Unterschied zwischen springmvc @ Async, DeferredResult, Callable
- 2. ListenableFuture zu scala Future
- 3. ListenableFuture zu scala Future
- 4. Listenablefuture vs Completablefuture
- 5. Testen von DeferredResult timeoutResult
- 6. Federmvc mit Facelets
- 7. Unterschied zwischen Vorzeichen & und *?
- 8. Unterschied zwischen numpy.logical_and und &
- 9. Unterschied zwischen. und #
- 10. VBA: Unterschied zwischen & und +
- 11. Unterschied zwischen "**/* /" und "** /"?
- 12. Unterschied zwischen = und: =
- 13. MySQL: Unterschied zwischen ', `,' und '
- 14. Unterschied zwischen // und http: //
- 15. Unterschied zwischen `% in%` und `==`
- 16. Unterschied zwischen $ # und $ {# @}
- 17. Der Unterschied zwischen GotFocus und GotKeyboardFocus
- 18. Der Unterschied zwischen Kopf und Schwanz Rekursion
- 19. Was ist der Unterschied zwischen `==` und `ist`?
- 20. Der tatsächliche Unterschied zwischen UIAccessibilityLayoutChangedNotification und UIAccessibilityScreenChangedNotification?
- 21. Was ist der Unterschied zwischen:.! und: r !?
- 22. Der Unterschied zwischen cin.ignore und cin.sync
- 23. Was ist der Unterschied zwischen Difftime und '-'?
- 24. der Unterschied zwischen os.mkdir() und os.makedirs()
- 25. Der Unterschied zwischen bash und Python Rohre
- 26. Was ist der Unterschied zwischen $ und $$?
- 27. Unterschied der Enum zwischen Java und C++?
- 28. Der Unterschied zwischen OnActionExecuted und OnResultExecuting
- 29. Was ist der Unterschied zwischen Verilog! und ~?
- 30. was ist der Unterschied zwischen [[], []] und [[]] * 2