ใน RxJava มี5 ตัวเลือกที่แตกต่างกันให้เลือก:
ทันที () : สร้างและส่งคืน Scheduler ที่ทำงานทันทีบนเธรดปัจจุบัน
trampoline () : สร้างและส่งคืน Scheduler ที่จัดคิวงานบนเธรดปัจจุบันที่จะดำเนินการหลังจากงานปัจจุบันเสร็จสมบูรณ์
newThread () : สร้างและส่งคืน Scheduler ที่สร้างเธรดใหม่สำหรับแต่ละหน่วยงาน
การคำนวณ () : สร้างและส่งคืน Scheduler สำหรับการคำนวณ สามารถใช้สำหรับการวนรอบเหตุการณ์การประมวลผลการเรียกกลับและงานคำนวณอื่น ๆ อย่าทำงานที่ถูกผูกไว้กับ IO บนตัวกำหนดตารางเวลานี้ ใช้ Schedulers io ()แทน
io () : สร้างและส่งคืน Scheduler สำหรับงานที่มีขอบเขต IO การใช้งานได้รับการสนับสนุนโดยเธรดพู Executionor ที่จะเติบโตตามที่ต้องการ สามารถใช้สำหรับการบล็อก IO แบบอะซิงโครนัส อย่าทำงานคำนวณบนตัวกำหนดตารางเวลานี้ ใช้ Schedulers การคำนวณ ()แทน
คำถาม:
3 schedulers แรกนั้นค่อนข้างอธิบายตนเอง แต่ฉันสับสนเล็กน้อยเกี่ยวกับการคำนวณและio
- "IO-bound work" คืออะไร? มันใช้สำหรับจัดการกับสตรีม (
java.io
) และไฟล์ (java.nio.files
) หรือไม่? มันใช้สำหรับการสืบค้นฐานข้อมูลหรือไม่ ใช้สำหรับดาวน์โหลดไฟล์หรือเข้าถึง REST API หรือไม่ - การคำนวณ ()แตกต่างจากnewThread ()อย่างไร มันคือการเรียกการคำนวณทั้งหมด()อยู่ในหัวข้อ (พื้นหลัง) เดียวแทนที่จะเป็นหัวข้อ (พื้นหลัง) ใหม่ในแต่ละครั้ง?
- เหตุใดการเรียกการคำนวณ ()เมื่อทำงาน IO จึงไม่ดี
- เหตุใดการโทรถึงioจึงไม่ดีเมื่อทำการคำนวณ