Quais são os benefícios de usar em Schedulers.newThread()
relação Schedulers.io()
à Retrofit
solicitação de rede. Já vi muitos exemplos que usam io()
, mas quero entender por quê.
Situação de exemplo:
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())...
vs
observable.onErrorResumeNext(refreshTokenAndRetry(observable))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())...
Uma das razões que vi é -
newThread()
cria um novo thread para cada unidade de trabalho. io()
usará um pool de threads
Mas qual é a influência desse argumento no aplicativo? E que outros aspectos existem?
fonte
Schedulers.io
?Schedulers.io()
, poderá esbarrar nos limites de i / o do sistema operacional (por exemplo, número máximo de arquivos abertos, número máximo de conexões tcp que, para fins de confiabilidade, podem permanecer abertas por um período, mesmo após serem descartadas) . Cada novo thread também requer uma quantidade mínima não trivial de RAM (> 512K, mas funciona em 1M) para que você possa ficar sem RAM.