android - subscribeon - Adaptación con Rxjava Schedulers.newThread() vs Schedulers.io()
import rx android schedulers androidschedulers (1)
¿Cuáles son los beneficios de usar
Schedulers.newThread()
vs
Schedulers.io()
en la solicitud de red
Retrofit
?
He visto muchos ejemplos que usan
io()
, pero quiero entender por qué.
Situación de ejemplo:
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())...
vs
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())...
Una de las razones que he visto es:
newThread()
crea un nuevo hilo para cada unidad de trabajo.
io()
usará un grupo de subprocesos
Pero, ¿cuál es la influencia de ese argumento en la aplicación? ¿Y qué otros aspectos hay?
Tiene razón en que el beneficio de usar
Schedulers.io()
radica en el hecho de que usa un grupo de subprocesos, mientras que
Schedulers.newThread()
no.
La razón principal por la que debe considerar el uso de grupos de subprocesos es que mantienen una cantidad de subprocesos creados previamente que están inactivos y esperando trabajo. Esto significa que cuando tiene trabajo por hacer, no necesita pasar por encima de la creación de un hilo. Una vez que haya terminado su trabajo, ese hilo también se puede reutilizar para trabajos futuros en lugar de crear y destruir hilos constantemente.
Crear hilos puede ser costoso, por lo que minimizar el número de hilos que está creando sobre la marcha es generalmente bueno.
Para obtener más información sobre grupos de subprocesos, recomiendo: