In der täglichen Entwicklung verwenden wir möglicherweise Warteschlangen, eine Speicherstruktur, die "First-in, first-out" erreichen kann.
Anwendungsszenarien: Protokolle schreiben, E-Mails versenden usw
Wenn wir das Schnittstellenprotokoll jedes Benutzers, der unsere Daten anfordert, aufzeichnen müssen, müssen wir nicht jedes Mal ein Protokoll schreiben, wenn der Benutzer es anfordert, sondern können den Protokollinhalt in die Warteschlange legen und andere Threads ausführen lassen, um die Effizienz der Anwendung nicht zu beeinträchtigen.
Ein weiterer Vorteil besteht darin, dass das Hinzufügen von Daten zur Warteschlange im Falle von Nebenläufigkeit, indem ein einzelner Thread die Daten der Warteschlange ausführt, viele Ausnahmen vermeiden kann; bei Nebenläufigkeit (Multithreaded) verursacht der Zugriff auf dieselbe physische Datei Ausnahmen. (vorbehaltlich Verfügbarkeit)
Warteschlangen-Universal-Ansatz:
Dies ist eine abstrakte Klasse, und du musst diese Abstraktionsklasse erben und die Execute-Abstraktionsmethode implementieren. Da ich nicht weiß, welche Art von Daten du verarbeiten möchtest, werden hier Generiken verwendet, das heißt, Entität ist vom Stringtyp, die Methodenparameter sind vom Stringtyp, und die Daten, die du bearbeitest, sind Stringtyp-Daten.
Die threadsichere Warteschlange von ConcurrentQueue stellt sicher, dass es in einer Multi-Thread-Umgebung keine Ausnahmen gibt.
ManualResetEvent, um das Signal des Threads zu steuern,Früher haben wir die Warteschlange alle paar Sekunden oder Minuten auf Daten überprüftJetzt fügen wir die Daten in die Warteschlange hinzu und müssen nur noch ein Signal weitergeben!
Verwendung:
(Ende)
|