So implementieren Sie die BlockingQueue-Schnittstelle in Java



In diesem Artikel erhalten Sie detaillierte und umfassende Kenntnisse zur Implementierung einer BlockingQueue-Schnittstelle in Java.

Eine Warteschlange ist ein wichtiger Aspekt jeder Programmiersprache. Besonders wenn wir darüber reden . In diesem Artikel wird die BlockingQueue-Schnittstelle in Java in der folgenden Reihenfolge erläutert:

Was ist eine BlockingQueue-Schnittstelle in Java?

Eine BlockingQueue-Schnittstelle in Java ist eine Warteschlange, die blockiert, wenn Sie versuchen, die Warteschlange zu verlassen und die Warteschlange leer ist, oder wenn Sie versuchen, Elemente in die Warteschlange zu stellen, und die Warteschlange bereits voll ist. Ein Thread, der versucht, aus einer leeren Warteschlange aus der Warteschlange zu entfernen, wird blockiert, bis ein anderer Thread ein Element in die Warteschlange einfügt. Ein Thread, der versucht, ein Element in eine vollständige Warteschlange zu stellen, wird blockiert, bis ein anderer Thread Platz in der Warteschlange schafft, indem er entweder ein oder mehrere Elemente aus der Warteschlange entfernt oder die Warteschlange vollständig löscht.





Prioritätswarteschlange in c ++

Die BlockingQueue-Schnittstelle in Java wird nicht akzeptiertNullWerte und werfenNullPointerExceptionWenn Sie versuchen, den Nullwert in der Warteschlange zu speichern.Java BlockingQueue-Implementierungen sind fadensicher . Alle Warteschlangenmethoden sind atomarer Natur und verwenden interne Sperren oder andere Formen der Parallelitätskontrolle.



verwandle double in int java

Java-Warteschlangenklassendiagramm

Die Java Queue-Schnittstelle erweitert die Collection-Schnittstelle. Die Collection-Schnittstelle erweitert die Iterable-Schnittstelle. Einige der häufig verwendeten Warteschlangenimplementierungsklassen sind LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,etc .. AbstractQueue bietet eine Skelettimplementierung der Queue-Schnittstelle, um den Aufwand bei der Implementierung von Queue zu reduzieren.

BlockingQueue-Typen

Es gibt zwei Arten von BlockingQueue:



  • Ungebundene Warteschlange: Die Kapazität der Blockierungswarteschlange wird auf Integer.MAX_VALUE festgelegt. Im Fall einer unbegrenzten Blockierungswarteschlange wird die Warteschlange niemals blockiert, da sie sehr groß werden kann. Wenn Sie Elemente hinzufügen, wächst die Größe.

Syntax:
BlockingQueue Blocking Queue = new LinkedBlockingDeque ()

  • Begrenzte Warteschlange: Der zweite Warteschlangentyp ist die begrenzte Warteschlange. Im Fall der begrenzten Warteschlange können Sie eine Warteschlange erstellen, die die Kapazität der Warteschlange im Warteschlangenkonstruktor umgeht:
    Syntax:
    // Erstellt eine Blockierungswarteschlange mit Kapazität 5

BlockingQueue Blocking Queue = new LinkedBlockingDeque (5)

Methoden in der BlockingQueue-Schnittstelle

Typ ändern Methodensyntax Benutzt für Beschreibung
Boolescher Wert addiere (E und) Einfügen

Fügt das angegebene Element in diese Warteschlange ein, wenn dies ohne Verletzung der Kapazitätsbeschränkungen sofort möglich ist. Bei Erfolg wird true zurückgegeben und eine IllegalStateException ausgelöst, wenn derzeit kein Speicherplatz verfügbar ist.

Boolescher Wert enthält (Objekt o) Untersuchen

Gibt true zurück, wenn diese Warteschlange das angegebene Element enthält.

int drainTo (Sammlung c) Abrufen oder Entfernen

Entfernt alle verfügbaren Elemente aus dieser Warteschlange und fügt sie der angegebenen Sammlung hinzu.

int drainTo (Sammlung c, int maxElements) Abrufen oder Entfernen

Entfernt höchstens die angegebene Anzahl verfügbarer Elemente aus dieser Warteschlange und fügt sie der angegebenen Sammlung hinzu.

Boolescher Wert Angebot (E und) Einfügen

Fügt das angegebene Element in diese Warteschlange ein, wenn dies ohne Verletzung der Kapazitätsbeschränkungen sofort möglich ist, und gibt bei Erfolg true und false zurück, wenn derzeit kein Speicherplatz verfügbar ist.

Boolescher Wert Angebot (E e, lange Zeitüberschreitung, TimeUnit-Einheit) Einfügen

Fügt das angegebene Element in diese Warteschlange ein und wartet bei Bedarf bis zur angegebenen Wartezeit, bis Speicherplatz verfügbar ist.

IS Umfrage (lange Zeitüberschreitung, TimeUnit-Einheit) Abrufen oder Entfernen

Ruft den Kopf dieser Warteschlange ab und entfernt ihn. Warten Sie gegebenenfalls bis zur angegebenen Wartezeit, bis ein Element verfügbar ist.

Leere put (E e) Einfügen

Fügt das angegebene Element in diese Warteschlange ein und wartet bei Bedarf, bis Speicherplatz verfügbar ist.

int verbleibende Kapazität () Untersuchen

Gibt die Anzahl der zusätzlichen Elemente zurück, die diese Warteschlange idealerweise (ohne Speicher- oder Ressourcenbeschränkungen) ohne Blockierung akzeptieren kann, oder Integer.MAX_VALUE, wenn es keine intrinsische Begrenzung gibt.

Boolescher Wert entferne (Objekt o) + Abrufen oder Entfernen

Entfernt eine einzelne Instanz des angegebenen Elements aus dieser Warteschlange.wenn es vorhanden ist.

IS nehmen() Abrufen oder Entfernen

Ruft den Kopf dieser Warteschlange ab und entfernt ihn. Warten Sie gegebenenfalls, bis ein Element verfügbar ist.

BlockingQueue-Schnittstelle in Java Beispiel: Dienst

Paket com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue öffentliche Klasse ProducerConsumerService {public static void main (String [] args) {// BlockingQueue der Größe 10 erstellen BlockingQueue queue = new ArrayBlockingQueue 10) Produzent Produzent = neuer Produzent (Warteschlange) Verbraucher Verbraucher = neuer Verbraucher (Warteschlange) // Produzent wird gestartet, um Nachrichten in der Warteschlange zu produzieren Neuer Thread (Produzent) .start () // Verbraucher wird gestartet, um Nachrichten aus der Warteschlange zu konsumieren Neuer Thread (Verbraucher) .start () System.out.println ('Produzent und Konsument wurde gestartet')}}

Damit haben wir das Ende der BlockingQueue-Schnittstelle in Java erreicht. Ich hoffe, alle Ihre Konzepte sind jetzt klar.

Besuche die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Der Java J2EE- und SOA-Schulungs- und Zertifizierungskurs von Edureka richtet sich an Studenten und Fachleute, die Java-Entwickler werden möchten. Der Kurs soll Ihnen einen Vorsprung in die Java-Programmierung verschaffen und Sie sowohl für grundlegende als auch für fortgeschrittene Java-Konzepte sowie für verschiedene Java-Frameworks wie Hibernate & Spring schulen.

Hast du eine Frage an uns? Bitte erwähnen Sie dies im Kommentarbereich dieses Blogs „BlockingQueue Interface in Java“. Wir werden uns so schnell wie möglich bei Ihnen melden.