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
FragenDie 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 verwendetjava.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?