Mik*_*eps 83 android rx-java retrofit rx-android
在网络请求中使用Schedulers.newThread()vs 有什么好处.我见过许多使用的例子,但我想了解原因.Schedulers.io()Retrofitio()
示例情况:
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())...
Run Code Online (Sandbox Code Playgroud)
VS
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())...
Run Code Online (Sandbox Code Playgroud)
我见过的原因之一是 -
newThread()为每个工作单元创建一个新线程.io()将使用线程池
但是这个论点对应用程序的影响是什么?还有什么其他方面?
Tan*_*.7x 96
你是正确的,使用的好处Schedulers.io()在于它使用线程池,而Schedulers.newThread()不是.
您应该考虑使用线程池的主要原因是它们维护了一些空闲且等待工作的预创建线程.这意味着当您完成工作时,您不需要经历创建线程的开销.完成工作后,该线程也可以重新用于将来的工作,而不是不断创建和销毁线程.
线程创建起来可能很昂贵,因此最大限度地减少动态创建的线程数通常很好.
有关线程池的更多信息,我建议:
| 归档时间: |
|
| 查看次数: |
14582 次 |
| 最近记录: |