Retrofit met Rxjava Schedulers.newThread() vs Schedulers.io()

Wat zijn de voordelen van het gebruik van Schedulers.newThread()versus Schedulers.io()in Retrofitnetwerkverzoek. Ik heb veel voorbeelden gezien die io()gebruiken, maar ik wil begrijpen waarom.

Voorbeeldsituatie:

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

vs

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

Een van de redenen die ik heb gezien is –

newThread()maakt een nieuwe thread aan voor elke werkeenheid. io()gebruikt een threadpool

Maar wat is de invloed van dat argument op de app? En welke andere aspecten zijn er?


Antwoord 1, autoriteit 100%

Je hebt gelijk dat het voordeel van het gebruik van Schedulers.io()ligt in het feit dat het een thread-pool gebruikt, terwijl Schedulers.newThread()dat niet doet.

De belangrijkste reden dat u zou moeten overwegen om threadpools te gebruiken, is dat ze een aantal vooraf gemaakte threads onderhouden die inactief zijn en wachten op werk. Dit betekent dat wanneer je werk te doen hebt, je niet door de overhead hoeft te gaan van het maken van een thread. Als je werk klaar is, kan die thread ook opnieuw worden gebruikt voor toekomstig werk in plaats van constant threads te maken en te vernietigen.

Threads kunnen duur zijn om te maken, dus het is over het algemeen goed om het aantal threads dat u on-the-fly maakt te minimaliseren.

Voor meer informatie over threadpools raad ik het volgende aan:

Other episodes