Kapitel 10. Ströme

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Bisher haben wir Coroutines, Suspending-Funktionen und den Umgang mit Streams mit Channels behandelt. Wir haben im vorherigen Kapitel gesehen, dass die Arbeit mit Channels das Starten von Coroutines erfordert, um von diesen Channels zu senden und/oder zu empfangen. Die oben erwähnten Coroutines sind heiße Entitäten, die manchmal schwer zu debuggen sind oder Ressourcen verschwenden können, wenn sie nicht rechtzeitig abgebrochen werden.

Flows sind, wie Channels, dafür gedacht, asynchrone Datenströme zu verarbeiten, allerdings auf einer höheren Abstraktionsebene und mit besseren Bibliothekswerkzeugen. Vom Konzept her sind Flows ähnlich wie Sequences, mit dem Unterschied, dass jeder Schritt eines Flow asynchron sein kann. Es ist auch einfach, Datenströme in strukturierte Gleichzeitigkeit zu integrieren, um ein Auslaufen von Ressourcen zu vermeiden.

Allerdings sind Flows1 sind jedoch nicht als Ersatz für Channelgedacht. Channels sind Bausteine für Flows. Channels sind in einigen Architekturen, wie z. B. in CSP (siehe Kapitel 9), immer noch angebracht. Du wirst jedoch sehen, dass Flows für die meisten Anforderungen in der asynchronenDatenverarbeitung geeignet sind.

In diesem Kapitel stellen wir dir Cold und Hot Flows vor. Du wirst sehen, dass Cold Flows die bessere Wahl sind, wenn du sicherstellen willst, dass keine Ressourcen verloren ...

Get Android mit Kotlin programmieren now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.