用于网络的Rxjava2呼吁提高性能

时间:2018-10-29 04:46:26

标签: asynchronous reactive-programming rx-java2

假设我有一个服务器端的Restful应用程序正在服务器中运行。有一个GET方法可以进行一些外部API调用,并对接收到的数据进行一些计算。

现在让我们大约需要1-2秒来进行外部API调用。因此,我的理解是,尽管我的应用程序将运行API调用,但线程将一直处于阻塞状态,直到结果返回。
因此,如果我使用RxJava2进行此网络调用,则如下所示:

Observable.just{
//The network call code that returns result in JSON format
}.subscribe(next-> this.result = next,
            e-> println("Error Occured),
            ()-> println("Data received")

现在将释放开始执行此任务的线程,并在网络调用返回结果时回调另一个线程吗?

我改用以下代码会发生什么情况

 Observable.just{
    //The network call code that returns result in JSON format
    }.subscribeOn(Schedulers.io)
    .subscribe(next-> this.result = next,
                e-> println("Error Occured),
                ()-> println("Data received")

我的理解是,调度程序创建了一个单独的线程来进行网络调用。这样对服务器端有利吗?

0 个答案:

没有答案