Я хотел бы знать разницу между CompletableFuture
, Future
и Observable
RxJava
.
Я знаю, что все они асинхронные, но
Future.get()
блокирует поток
CompletableFuture
предоставляет методы обратного вызова
RxJava Observable
--- похож на CompletableFuture
с другими преимуществами (не уверен)
Например: если клиенту нужно сделать несколько вызовов службы и когда мы используем Futures
(Java), Future.get()
будет выполняться последовательно... хотел бы узнать, как лучше в RxJava..
А в документации http://reactivex.io/intro.html сказано
Сложно использовать Futures для оптимального составления условных асинхронных потоков выполнения (или невозможно, так как задержки каждого запроса меняются во время выполнения). Конечно, это можно сделать, но это быстро усложняется (и поэтому подвержено ошибкам) или преждевременно блокирует Future.get(), что исключает преимущество асинхронного выполнения.
Действительно интересно узнать, как RxJava
решает эту проблему. Мне было трудно понять из документации.