假设我有一个服务器端的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")
我的理解是,调度程序创建了一个单独的线程来进行网络调用。这样对服务器端有利吗?