어떻게 사용하는 혜택이다 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()
하지 않는다는 사실에 있습니다 .
스레드 풀 사용을 고려해야하는 주된 이유는 유휴 상태이고 작업을 기다리는 미리 작성된 여러 스레드를 유지하기 때문입니다. 즉, 수행 할 작업이있을 때 스레드를 만드는 오버 헤드를 겪을 필요가 없습니다. 작업이 완료되면 해당 스레드는 지속적으로 스레드를 생성하고 파괴하는 대신 향후 작업을 위해 재사용 할 수도 있습니다.
스레드를 만드는 데 비용이 많이들 수 있으므로 즉석에서 만드는 스레드 수를 최소화하는 것이 일반적으로 좋습니다.
스레드 풀에 대한 자세한 내용은 다음을 권장합니다.