No RxJava, existem 5 agendadores diferentes para você escolher:
imediato () : cria e retorna um agendador que executa o trabalho imediatamente no segmento atual.
trampolim () : cria e retorna um agendador que enfileira o trabalho no encadeamento atual a ser executado após a conclusão do trabalho atual.
newThread () : cria e retorna um agendador que cria um novo thread para cada unidade de trabalho.
computation () : cria e retorna um agendador destinado ao trabalho computacional. Isso pode ser usado para loops de eventos, processamento de retornos de chamada e outros trabalhos computacionais. Não execute trabalho vinculado a E / S neste planejador. Use agendadores. io () em vez disso.
io () : cria e retorna um agendador destinado ao trabalho vinculado a E / S. A implementação é apoiada por um pool de threads do Executor que aumentará conforme necessário. Isso pode ser usado para executar de forma assíncrona o bloqueio de E / S. Não execute trabalho computacional neste planejador. Use agendadores. computation () .
Questões:
Os três primeiros agendadores são bastante auto-explicativos; no entanto, estou um pouco confuso sobre computação e io .
- O que exatamente é "trabalho vinculado a IO"? É usado para lidar com fluxos (
java.io
) e arquivos (java.nio.files
)? É usado para consultas ao banco de dados? É usado para baixar arquivos ou acessar APIs REST? - Qual a diferença entre computação () e newThread () ? Será que todas as chamadas de computação () estão em um único segmento (segundo plano) em vez de um novo segmento (segundo plano) de cada vez?
- Por que é ruim chamar computation () ao fazer um trabalho de IO?
- Por que é ruim chamar io () ao fazer um trabalho computacional?