Pertanyaan Retrofit dengan Rxjava Schedulers.newThread () vs Schedulers.io ()


Apa manfaatnya untuk digunakan Schedulers.newThread() vs Schedulers.io() di Retrofit permintaan jaringan. Saya telah melihat banyak contoh yang digunakan io(), tapi saya ingin mengerti mengapa.

Contoh situasi:

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

vs

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

Salah satu alasan yang saya lihat adalah -

newThread() membuat utas baru untuk setiap unit kerja. io() akan menggunakan kolam ulir

Tapi apa pengaruh argumen itu di aplikasi? Dan apa aspek lain yang ada?


76
2017-10-29 13:41


asal


Jawaban:


Anda benar bahwa manfaat menggunakan Schedulers.io() terletak pada kenyataan bahwa itu menggunakan kolam benang, sedangkan Schedulers.newThread() tidak.

Alasan utama yang harus Anda pertimbangkan untuk menggunakan kumpulan ulir adalah bahwa mereka mempertahankan sejumlah utas pra-buat yang tidak aktif dan menunggu pekerjaan. Ini berarti bahwa ketika Anda memiliki pekerjaan yang harus dilakukan, Anda tidak perlu melalui overhead menciptakan sebuah thread. Setelah pekerjaan Anda selesai, utas itu juga dapat digunakan kembali untuk pekerjaan di masa depan, bukan terus-menerus membuat dan menghancurkan untaian.

Benang bisa mahal untuk dibuat, jadi meminimalkan jumlah benang yang Anda buat dengan cepat pada umumnya baik.

Untuk informasi lebih lanjut tentang rangkaian ulir, saya sarankan:


89
2017-10-29 13:57