Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java ArrayBlockingQueue

Java ArrayBlockingQueue

In diesem Tutorial lernen wir die Klasse ArrayBlockingQueue und ihre Methoden anhand von Beispielen kennen.

Der ArrayBlockingQueue -Klasse des Java-Collections-Frameworks stellt die Implementierung der blockierenden Warteschlange mithilfe eines Arrays bereit.

Es implementiert die Java BlockingQueue-Schnittstelle.


ArrayBlockingQueue erstellen

Um eine Array-Blockierungswarteschlange zu erstellen, müssen wir den java.util.concurrent.ArrayBlockingQueue importieren Paket.

Sobald wir das Paket importiert haben, können wir wie folgt eine Array-Blockierungswarteschlange in Java erstellen:

ArrayBlockingQueue<Type> animal = new ArrayBlockingQueue<>(int capacity);

Hier,

Zum Beispiel

// Creating String type ArrayBlockingQueue with size 5
ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);

// Creating Integer type ArrayBlockingQueue with size 5
ArrayBlockingQueue<Integer> age = new ArrayBlockingQueue<>(5);

Hinweis: Die Größe des Arrays muss zwingend angegeben werden.


Methoden von ArrayBlockingQueue

Die ArrayBlockingQueue Klasse stellt die Implementierung aller Methoden in BlockingQueue bereit Schnittstelle.

Diese Methoden werden verwendet, um Elemente aus Array-Sperrwarteschlangen einzufügen, darauf zuzugreifen und sie zu löschen.

Außerdem lernen wir zwei Methoden kennen put() und take() die die Sperroperation in der Array-Blocking-Queue unterstützen.

Diese beiden Methoden unterscheiden die Array-Blockierungswarteschlange von anderen typischen Warteschlangen.


Elemente einfügen

Zum Beispiel

import java.util.concurrent.ArrayBlockingQueue;

class Main {
    public static void main(String[] args) {
        ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);

        // Using add()
        animals.add("Dog");
        animals.add("Cat");

        // Using offer()
        animals.offer("Horse");
        System.out.println("ArrayBlockingQueue: " + animals);
    }
}

Ausgabe

ArrayBlockingQueue: [Dog, Cat, Horse]

Zugriffselemente

Zum Beispiel

import java.util.concurrent.ArrayBlockingQueue;
import java.util.Iterator;

class Main {
    public static void main(String[] args) {
        ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);

        // Add elements
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("ArrayBlockingQueue: " + animals);

        // Using peek()
        String element = animals.peek();
        System.out.println("Accessed Element: " + element);

        // Using iterator()
        Iterator<String> iterate = animals.iterator();
        System.out.print("ArrayBlockingQueue Elements: ");

        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

Ausgabe

ArrayBlockingQueue: [Dog, Cat, Horse]
Accessed Element: Dog
ArrayBlockingQueue Elements: Dog, Cat, Horse,

Elemente entfernen

Zum Beispiel

import java.util.concurrent.ArrayBlockingQueue;

class Main {
    public static void main(String[] args) {
        ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);

        animals.add("Dog");
        animals.add("Cat");
        animals.add("Horse");
        System.out.println("ArrayBlockingQueue: " + animals);

        // Using remove()
        String element1 = animals.remove();
        System.out.println("Removed Element:");
        System.out.println("Using remove(): " + element1);

        // Using poll()
        String element2 = animals.poll();
        System.out.println("Using poll(): " + element2);

        // Using clear()
        animals.clear();
        System.out.println("Updated ArrayBlockingQueue: " + animals);
    }
}

Ausgabe

ArrayBlockingQueue: [Dog, Cat, Horse]
Removed Elements:
Using remove(): Dog
Using poll(): Cat
Updated ArrayBlockingQueue: []

put()- und take()-Methode

In Multithreading-Prozessen können wir put() verwenden und take() um den Betrieb eines Threads zu blockieren, um ihn mit einem anderen Thread zu synchronisieren. Diese Methoden warten, bis sie erfolgreich ausgeführt werden können.


put()-Methode

Um ein Element am Ende einer Array-Blockierungswarteschlange hinzuzufügen, können wir den put() verwenden Methode.

Wenn die Array-Blockierungswarteschlange voll ist, wartet sie, bis in der Array-Blockierungswarteschlange Platz ist, um ein Element hinzuzufügen.

Zum Beispiel

import java.util.concurrent.ArrayBlockingQueue;

class Main {
    public static void main(String[] args) {
        ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);

       try {
        // Add elements to animals
           animals.put("Dog");
           animals.put("Cat");
           System.out.println("ArrayBlockingQueue: " + animals);
        }
        catch(Exception e) {
            System.out.println(e);
        }
    }
}

Ausgabe

ArrayBlockingQueue: [Dog, Cat]

Hier der put() -Methode kann einen InterruptedException auslösen wenn es beim Warten unterbrochen wird. Daher müssen wir es in ein try..catch einschließen blockieren.


take()-Methode

Um ein Element aus dem Anfang der Array-Blockierungswarteschlange zurückzugeben und zu entfernen, können wir den take() verwenden Methode.

Wenn die Array-Blockierungswarteschlange leer ist, wartet sie, bis es Elemente in der Array-Blockierungswarteschlange gibt, die gelöscht werden sollen.

Zum Beispiel

import java.util.concurrent.ArrayBlockingQueue;

class Main {
    public static void main(String[] args) {
        ArrayBlockingQueue<String> animals = new ArrayBlockingQueue<>(5);

       try {
           //Add elements to animals
           animals.put("Dog");
           animals.put("Cat");
           System.out.println("ArrayBlockingQueue: " + animals);

           // Remove an element
           String element = animals.take();
           System.out.println("Removed Element: " + element);
        }
        catch(Exception e) {
            System.out.println(e);
        }
    }
}

Ausgabe

ArrayBlockingQueue: [Dog, Cat]
Removed Element: Dog

Hier der take() Methode wird ein InterrupedException auslösen wenn es beim Warten unterbrochen wird. Daher müssen wir es in einen try...catch einschließen blockieren.


Andere Methoden

Methoden Beschreibungen
contains(element) Durchsucht die Array Blocking Queue nach dem angegebenen Element.Wenn das Element gefunden wird, gibt es true zurück , wenn nicht, wird false zurückgegeben .
size() Gibt die Länge der Blockierungswarteschlange des Arrays zurück.
toArray() Konvertiert die Array-Blockierungswarteschlange in ein Array und gibt es zurück.
toString() Konvertiert die Blockierungswarteschlange des Arrays in einen String

Warum ArrayBlockingQueue verwenden?

Der ArrayBlockingQueue verwendet Arrays als internen Speicher.

Es gilt als threadsicher Sammlung. Daher wird es im Allgemeinen in Multithreading-Anwendungen verwendet.

Angenommen, ein Thread fügt Elemente in die Warteschlange ein und ein anderer Thread entfernt Elemente aus der Warteschlange.

Wenn nun der erste Thread langsamer als der zweite Thread ist, kann die Array-Blockierungswarteschlange den zweiten Thread warten lassen, bis der erste Thread seine Operationen abgeschlossen hat.


Java

  1. Java-Operatoren
  2. Java-Kommentare
  3. Java for-each-Schleife
  4. Java-Strings
  5. Java-Schnittstelle
  6. Anonyme Java-Klasse
  7. Java-Versuch-mit-Ressourcen
  8. Java-Anmerkungen
  9. Java-Assertionen
  10. Java-Vektor