DelayQueue ist eine unbegrenzte Blockierungswarteschlange, aus der Elemente nur extrahiert werden können, wenn die Verzögerung abläuft. Der Kopf der Warteschlange ist das Delayed-Element, das nach Ablauf der Verzögerung die längste Zeit hält.
DelayQueue-Blockierungswarteschlange wird auch häufig in unserer Systementwicklung verwendet, zum Beispiel: Das Design des Cache-Systems, die Objekte im Cache, überschreiten die Leerlaufzeit, müssen Aus dem Cache entfernt werden. Das Aufgabenplanungssystem kann die Ausführungszeit von Aufgaben genau erfassen. Möglicherweise müssen wir viele zeitkritische Daten über Threads verarbeiten. Wenn wir normale Threads verwenden, müssen wir zunächst alle Objekte durchlaufen und prüfen, ob die Daten abgelaufen sind zu hoch. Zweitens wirkt sich dieser Designstil auch stark auf die Genauigkeit der Daten aus. Eine Aufgabe, die um 12:00 Uhr ausgeführt werden muss, wird möglicherweise erst um 12:01 Uhr ausgeführt, was für Systeme mit hohen Datenanforderungen größere Nachteile mit sich bringt. Daraus können wir DelayQueue verwenden.
Um ein Aufrufverhalten zu haben, müssen die in DelayDeque gespeicherten Elemente die Delayed-Schnittstelle implementieren. Die Delayed-Schnittstelle macht das Objekt zu einem verzögerten Objekt, wodurch das in der DelayQueue-Klasse gespeicherte Objekt ein Aktivierungsdatum erhält. Diese Schnittstelle erzwingt die folgenden zwei Methoden.
CompareTo(Delayed o):Delayed接口继承了Comparable接口,因此有了这个方法。 getDelay(TimeUnit unit):这个方法返回到激活日期的剩余时间,时间单位由单位参数指定。
Implementiert die verzögerte Schnittstelle
Dieser Code: Vergleichen Sie die Ausführungszeit nach Vertragsunterzeichnung mit der aktuellen Zeit, um eine automatische Ausführung des Vertrags zu diesem Zeitpunkt zu erreichen.
Der Thread startet, DelayQueue beginnt zu arbeiten
Spring Boot beginnt mit dem Laden, initialisiert die Datenquelle und fügt es ein und aktiviert den einzelnen Thread
Einen Datensatz hinterlassen!
Verwandte Empfehlungen:
Vertiefendes Verständnis der Blockierungswarteschlangencontainer in der Java-Thread-Programmierung
ArrayBlockingQueue der gleichzeitigen Paketblockierungswarteschlange
Das obige ist der detaillierte Inhalt vonDie Verwendung von DelayQueue in JAVA: Blockierungswarteschlange, Verzögerungswarteschlange. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!