[android] Rxjava Schedulers.newThread () 대 Schedulers.io ()로 개조

어떻게 사용하는 혜택이다 Schedulers.newThread()Schedulers.io()에서 Retrofit네트워크 요청. 를 사용하는 많은 예를 보았지만 그 io()이유를 이해하고 싶습니다.

예시 상황 :

observable.onErrorResumeNext(refreshTokenAndRetry(observable))
    .subscribeOn(Schedulers.newThread())
    .observeOn(AndroidSchedulers.mainThread())...

vs

observable.onErrorResumeNext(refreshTokenAndRetry(observable))
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())...

내가 본 이유 중 하나는-

newThread()각 작업 단위에 대한 새 스레드를 만듭니다. io()스레드 풀을 사용합니다.

하지만 그 주장이 앱에 미치는 영향은 무엇일까요? 그리고 어떤 다른 측면이 있습니까?



답변

사용의 이점은 Schedulers.io()스레드 풀을 사용하는 반면 사용 Schedulers.newThread()하지 않는다는 사실에 있습니다 .

스레드 풀 사용을 고려해야하는 주된 이유는 유휴 상태이고 작업을 기다리는 미리 작성된 여러 스레드를 유지하기 때문입니다. 즉, 수행 할 작업이있을 때 스레드를 만드는 오버 헤드를 겪을 필요가 없습니다. 작업이 완료되면 해당 스레드는 지속적으로 스레드를 생성하고 파괴하는 대신 향후 작업을 위해 재사용 할 수도 있습니다.

스레드를 만드는 데 비용이 많이들 수 있으므로 즉석에서 만드는 스레드 수를 최소화하는 것이 일반적으로 좋습니다.

스레드 풀에 대한 자세한 내용은 다음을 권장합니다.


답변