W RxJava dostępnych jest 5 różnych harmonogramów :
natychmiastowe () : Tworzy i zwraca program planujący, który natychmiast wykonuje pracę w bieżącym wątku.
trampoline () : Tworzy i zwraca program planujący, który kolejkuje pracę nad bieżącym wątkiem do wykonania po zakończeniu bieżącej pracy.
newThread () : Tworzy i zwraca harmonogram, który tworzy nowy wątek dla każdej jednostki pracy.
computation () : Tworzy i zwraca program planujący przeznaczony do pracy obliczeniowej. Może to być wykorzystane do pętli zdarzeń, przetwarzania wywołań zwrotnych i innych prac obliczeniowych. Nie wykonuj prac związanych z IO na tym harmonogramie. Użyj harmonogramów. zamiast tego io () .
io () : Tworzy i zwraca program planujący przeznaczony do pracy związanej z We / Wy. Implementacja jest wspierana przez pulę wątków Executora, która będzie rosła w miarę potrzeb. Można tego użyć do asynchronicznego wykonywania blokujących operacji we / wy. Nie wykonuj prac obliczeniowych na tym harmonogramie. Użyj harmonogramów. zamiast tego computation () .
Pytania:
Pierwsze 3 harmonogramy są dość zrozumiałe; jestem jednak trochę zagubiony w obliczeniach i io .
- Czym dokładnie jest „praca związana z IO”? Czy jest używany do obsługi strumieni (
java.io
) i plików (java.nio.files
)? Czy jest używany do zapytań do bazy danych? Czy służy do pobierania plików lub uzyskiwania dostępu do interfejsów API REST? - Czym różni się computation () od newThread () ? Czy to dlatego, że wszystkie wywołania computation () są za każdym razem w jednym wątku (w tle) zamiast nowego (w tle)?
- Dlaczego źle jest wywoływać obliczenia () podczas wykonywania operacji we / wy?
- Dlaczego źle jest wywoływać io () podczas wykonywania obliczeń?