Di RxJava ada 5 penjadwal berbeda untuk dipilih:
direct () : Membuat dan mengembalikan Penjadwal yang menjalankan pekerjaan segera di utas saat ini.
trampoline () : Membuat dan mengembalikan Penjadwal yang antrean bekerja di utas saat ini untuk dieksekusi setelah pekerjaan saat ini selesai.
newThread () : Membuat dan mengembalikan Penjadwal yang membuat Thread baru untuk setiap unit kerja.
perhitungan () : Membuat dan mengembalikan Penjadwal yang dimaksudkan untuk pekerjaan komputasi. Ini dapat digunakan untuk acara-loop, memproses panggilan balik dan pekerjaan komputasi lainnya. Jangan melakukan pekerjaan yang terikat IO pada penjadwal ini. Gunakan Penjadwal. io () sebagai gantinya.
io () : Membuat dan mengembalikan Penjadwal yang ditujukan untuk pekerjaan yang terikat IO. Implementasi didukung oleh thread-pelaksana yang akan tumbuh sesuai kebutuhan. Ini dapat digunakan untuk melakukan pemblokiran IO secara asinkron. Jangan melakukan pekerjaan komputasi pada penjadwal ini. Gunakan Penjadwal. perhitungan () sebagai gantinya.
Pertanyaan:
3 penjadwal pertama cukup jelas; Namun, saya agak bingung tentang perhitungan dan io .
- Apa sebenarnya "pekerjaan terikat IO"? Apakah ini digunakan untuk berurusan dengan stream (
java.io
) dan file (java.nio.files
)? Apakah ini digunakan untuk permintaan basis data? Apakah ini digunakan untuk mengunduh file atau mengakses REST API? - Apa perbedaan komputasi () dengan newThread () ? Apakah itu semua perhitungan () panggilan berada di utas tunggal (latar belakang) alih-alih utas baru (latar belakang) setiap kali?
- Mengapa memanggil komputasi itu buruk () ketika melakukan IO bekerja buruk?
- Mengapa memanggil io () saat melakukan pekerjaan komputasi itu buruk ?