In RxJava ci sono 5 diversi programmatori tra cui scegliere:
immediate () : crea e restituisce uno Scheduler che esegue immediatamente il lavoro sul thread corrente.
trampolino () : crea e restituisce uno Scheduler che le code lavorano sul thread corrente per essere eseguite dopo il completamento del lavoro corrente.
newThread () : crea e restituisce uno Scheduler che crea un nuovo thread per ogni unità di lavoro.
computation () : crea e restituisce uno Scheduler destinato al lavoro computazionale. Questo può essere usato per loop di eventi, elaborazione di callback e altri lavori computazionali. Non eseguire lavori associati a IO su questo scheduler. Usa programmatori. io () invece.
io () : crea e restituisce uno Scheduler destinato al lavoro associato a IO. L'implementazione è supportata da un pool di thread Executor che crescerà secondo necessità. Questo può essere usato per eseguire IO di blocco in modo asincrono. Non eseguire lavori di calcolo su questo scheduler. Usa programmatori. computazione () invece.
Domande:
I primi 3 programmatori sono piuttosto autoesplicativi; tuttavia, sono un po 'confuso riguardo al calcolo e io .
- Che cosa è esattamente il "lavoro con IO"? Viene utilizzato per gestire flussi (
java.io
) e file (java.nio.files
)? Viene utilizzato per le query del database? Viene utilizzato per il download di file o l'accesso alle API REST? - In che modo il calcolo () è diverso da newThread () ? Tutte le chiamate di calcolo () si trovano ogni volta su un singolo thread (in background) anziché su un nuovo thread (in background)?
- Perché è male chiamare il calcolo () quando si fa il lavoro IO?
- Perché è male chiamare io () quando si fa un lavoro computazionale?