Um die zweite Frage zu beantworten, hier ist ein Problem, das von Rx sehr profitieren kann. Es heißt "schnell reich werden".
Sie haben ein gleichnamiges Spiel entwickelt, das sich ziemlich gut verkauft. Es ist jedoch nur in Ihren Filialen für den Großhandel erhältlich. Um die Bargeldverarbeitung zu vereinfachen, haben Sie ein Förderband, das zu Ihnen fließt.
(Bitte zögern Sie nicht, die obige Geschichte zu ändern :))
Verkäufer legen gebundene Geldbündel darauf, ohne dass Etiketten den Betrag und die Art der Rechnungen im Bündel angeben. Ihre Aufgabe ist es, das Geld zu sortieren und zu zählen. Wenn Sie später mehr Geld bekommen, können Sie andere einstellen, die Ihnen helfen.
In diesem Fall ist die Quelle eine asynchrone Quelle für Geldbündel (Produzent). Ihre Mitarbeiter und Lieferanten erwarten Geld, aber Sie müssen die Wads verbrauchen, auspacken und Ihre benutzerdefinierte Geschäftslogik verwenden, um sie entsprechend neu zu verpacken und zu bezahlen.
Die Verkäufer laufen auf ihrem eigenen Faden, damit sie nicht darauf warten müssen, dass Sie zählen, was sie auf den Gürtel werfen. Ihre Zeit wird am besten genutzt, wenn Sie erfahren, wann mehr Geld zum Zählen verfügbar ist. Bis dahin können Sie andere Arbeiten ausführen.
Sie können jedes Wad durch ein Byte [] darstellen.
Dies ist eine ziemlich häufige Situation in der realen Welt. Wenn Sie eine Ressource (z. B. Webseiten für Suchmaschinen, Bilder oder Videos) in einem Netzwerk oder Daten von Peripheriegeräten abrufen, erhalten Sie diese in Byte-Blöcken (möglicherweise mit Headern). In einem einzelnen Thread oder in einer Umgebung mit mehreren Threads, mit der es zu schwierig ist, zu arbeiten, neigen Sie dazu, sie zu aggregieren und zu verarbeiten. Nicht länger!!