Trong RxJava có 5 lịch trình khác nhau để lựa chọn:
ngay lập tức () : Tạo và trả về Bộ lập lịch thực thi công việc ngay lập tức trên luồng hiện tại.
trampoline () : Tạo và trả về Trình lập lịch biểu mà hàng đợi hoạt động trên luồng hiện tại sẽ được thực thi sau khi công việc hiện tại hoàn thành.
newThread () : Tạo và trả về Trình lập lịch biểu tạo Chủ đề mới cho mỗi đơn vị công việc.
tính toán () : Tạo và trả về một Trình lập lịch biểu dành cho công việc tính toán. Điều này có thể được sử dụng cho các vòng lặp sự kiện, xử lý các cuộc gọi lại và công việc tính toán khác. Không thực hiện công việc ràng buộc IO trên lịch trình này. Sử dụng lịch trình. io () thay vào đó.
io () : Tạo và trả về Bộ lập lịch dành cho công việc ràng buộc IO. Việc thực hiện được hỗ trợ bởi nhóm luồng Executor sẽ phát triển khi cần thiết. Điều này có thể được sử dụng để thực hiện chặn không đồng bộ IO. Không thực hiện công việc tính toán trên lịch trình này. Sử dụng lịch trình. tính toán () thay vào đó.
Câu hỏi:
3 lịch trình đầu tiên là khá tự giải thích; tuy nhiên, tôi hơi bối rối về tính toán và io .
- Chính xác thì "Công việc ràng buộc IO" là gì? Được sử dụng để xử lý các luồng (
java.io
) và tệp (java.nio.files
)? Nó được sử dụng cho các truy vấn cơ sở dữ liệu? Nó được sử dụng để tải xuống các tệp hoặc truy cập API REST? - Làm thế nào là tính toán () khác nhau từ newthread () ? Có phải tất cả các cuộc gọi tính toán () đều nằm trên một luồng (nền) thay vì một luồng (nền) mới mỗi lần?
- Tại sao gọi tính toán () khi thực hiện IO lại không tốt?
- Tại sao lại gọi io () khi làm công việc tính toán?