Pregunta Retrofit con Rxjava Schedulers.newThread () versus Schedulers.io ()


Cuáles son los beneficios para usar Schedulers.newThread() vs Schedulers.io() en Retrofit solicitud de red 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 hilos

Pero, ¿cuál es la influencia de ese argumento en la aplicación? ¿Y qué otros aspectos hay?


76
2017-10-29 13:41


origen


Respuestas:


Tiene razón en que el beneficio de usar Schedulers.io() radica en el hecho de que utiliza 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 varios subprocesos creados previamente que están inactivos y en espera de trabajo. Esto significa que cuando tiene trabajo por hacer, no necesita pasar por la sobrecarga de crear 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 constantemente hilos.

Los subprocesos pueden ser costosos de crear, por lo que minimizar el número de subprocesos que está creando sobre la marcha generalmente es bueno.

Para obtener más información sobre grupos de subprocesos, recomiendo:


89
2017-10-29 13:57