Diferencia entre CompletableFuture, Future y RxJava's Observable

Me gustaría saber la diferencia entreCompletableFuture,Future yObservable RxJava.

Lo que sé es que todos son asincrónicos pero

Future.get() bloquea el hilo

CompletableFuture da los métodos de devolución de llamada

RxJava Observable --- Similar aCompletableFuture con otros beneficios (no estoy seguro)

Por ejemplo: si el cliente necesita hacer múltiples llamadas de servicio y cuando usamosFutures (Java)Future.get() se ejecutará secuencialmente ... me gustaría saber cómo es mejor en RxJava ...

Y la documentaciónhttp://reactivex.io/intro.html dice

Es difícil usar Futures para componer de manera óptima flujos de ejecución asincrónicos condicionales (o imposible, ya que las latencias de cada solicitud varían en tiempo de ejecución). Esto se puede hacer, por supuesto, pero rápidamente se vuelve complicado (y por lo tanto propenso a errores) o se bloquea prematuramente en Future.get (), lo que elimina el beneficio de la ejecución asincrónica.

Realmente interesado en saber cómoRxJava resuelve este problema Me resultó difícil de entender por la documentación.

Respuestas a la pregunta(2)

Su respuesta a la pregunta