rxJava Schedulers Anwendungsfälle

n RxJava gibt es 5 verschiedene Scheduler wählen von

sofortig(: Erstellt einen Scheduler und gibt diesen zurück, der die Arbeit sofort für den aktuellen Thread ausführt.

Trampolin(: Erstellt einen Scheduler und gibt diesen zurück, der die Arbeit an dem aktuellen Thread in die Warteschlange stellt, die ausgeführt werden soll, nachdem die aktuelle Arbeit abgeschlossen ist.

neues Thema(: Erstellt einen Scheduler und gibt diesen zurück, der für jede Arbeitseinheit einen neuen Thread erstellt.

Berechnung(: Erstellt einen Scheduler und gibt diesen zurück, der für die Rechenarbeit vorgesehen ist. Dies kann für Ereignisschleifen, die Verarbeitung von Rückrufen und andere Berechnungsarbeiten verwendet werden. Führen Sie keine E / A-gebundenen Arbeiten an diesem Scheduler durch. Verwenden Sie Scheduler.io () stattdessen

io (): Erstellt einen Scheduler für E / A-gebundene Arbeit und gibt diesen zurück. Die Implementierung wird durch einen Executor-Thread-Pool unterstützt, der bei Bedarf erweitert wird. Dies kann für die asynchrone Ausführung von E / A-Blockierungen verwendet werden. Führen Sie keine Berechnungen mit diesem Scheduler durch. Verwenden Sie Scheduler.Berechnung( stattdessen

Fragen

Die ersten 3 Scheduler sind ziemlich selbsterklärend; Ich bin jedoch ein wenig verwirrt überBerechnun und io.

Was genau ist "IO-gebundene Arbeit"? Wird es für den Umgang mit Streams verwendet java.io) und Dateien java.nio.files)? Wird es für Datenbankabfragen verwendet? Wird es zum Herunterladen von Dateien oder für den Zugriff auf REST-APIs verwendet?Wie istBerechnung( anders alsneues Thema(? Ist es das allesBerechnung( -Aufrufe beziehen sich jedes Mal auf einen einzelnen (Hintergrund-) Thread anstelle eines neuen (Hintergrund-) Threads?Warum ist es schlecht, @ anzurufBerechnung( wenn IO arbeiten?Warum ist es schlecht, @ anzurufio () bei der Rechenarbeit?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage