Модернизация с помощью Rxjava Schedulers.newThread () vs Schedulers.io ()

Каковы преимущества использования Schedulers.newThread () vs Schedulers.io () в сетевом запросе на доработку. Я видел много примеров, которые используют .io (), но я хочу понять, почему.

Пример ситуации:

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

против

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

Одна из причин, я видел –

«NewThread () создает новый поток для каждой единицы работы. Io () будет использовать пул потоков».

Но каково влияние этого аргумента на приложение? И какие другие аспекты есть?

Solutions Collecting From Web of "Модернизация с помощью Rxjava Schedulers.newThread () vs Schedulers.io ()"

Вы правы, что преимущество использования Schedulers.io() заключается в том, что он использует пул потоков, тогда как Schedulers.newThread() этого не делает.

Основная причина, по которой вам следует рассмотреть использование пулов потоков, заключается в том, что они поддерживают ряд предварительно созданных потоков, которые не работают и ждут работы. Это означает, что когда у вас есть работа, вам не нужно проходить через накладные расходы на создание потока. Как только ваша работа будет завершена, этот поток также может быть повторно использован для будущей работы, а не для постоянного создания и уничтожения потоков.

Темы могут быть дорогими для создания, поэтому минимизация количества потоков, создаваемых вами на лету, в целом хороша.

Для получения дополнительной информации о пулах потоков, я рекомендую:

  • Каково использование пула потоков в Java?
  • Что такое пул потоков?
  • Схема пула потоков (Википедия)