En RxJava hay 5 programadores diferentes para elegir:
inmediata () : crea y devuelve un Programador que ejecuta el trabajo inmediatamente en el hilo actual.
trampoline () : crea y devuelve un Programador que pone en cola el trabajo en el hilo actual para que se ejecute después de que se complete el trabajo actual.
newThread () : crea y devuelve un programador que crea un nuevo subproceso para cada unidad de trabajo.
computation () : crea y devuelve un programador destinado al trabajo computacional. Esto se puede usar para bucles de eventos, procesamiento de devoluciones de llamada y otros trabajos computacionales. No realice trabajos vinculados a IO en este planificador. Usar programadores. io () en su lugar.
io () : crea y devuelve un planificador destinado a trabajos vinculados a IO. La implementación está respaldada por un grupo de subprocesos Ejecutor que crecerá según sea necesario. Esto se puede usar para realizar asincrónicamente el bloqueo de E / S. No realice trabajos computacionales en este planificador. Usar programadores. computation () en su lugar.
Preguntas:
Los primeros 3 programadores se explican por sí mismos; Sin embargo, estoy un poco confundido acerca de la computación y io .
- ¿Qué es exactamente el "trabajo vinculado a IO"? ¿Se utiliza para tratar streams (
java.io
) y files (java.nio.files
)? ¿Se utiliza para consultas de bases de datos? ¿Se utiliza para descargar archivos o acceder a las API REST? - ¿En qué se diferencia computation () de newThread () ? ¿Es que todas las llamadas de cómputo () están en un solo hilo (fondo) en lugar de un nuevo hilo (fondo) cada vez?
- ¿Por qué es malo llamar a computation () cuando hago trabajo IO?
- ¿Por qué es malo llamar a io () cuando se realiza un trabajo computacional?