I denne opplæringen lærer vi om ArrayBlockingQueue-klassen og dens metoder ved hjelp av eksempler.
Den ArrayBlockingQueueklassen av Java Collections rammeverket gir den blokkerer køen implementeringen ved hjelp av en matrise.
Den implementerer Java BlockingQueue-grensesnittet.

Opprette ArrayBlockingQueue
For å opprette en array-blokkeringskø, må vi importere java.util.concurrent.ArrayBlockingQueuepakken.
Når vi har importert pakken, kan du opprette en array-blokkeringskø i Java:
 ArrayBlockingQueue animal = new ArrayBlockingQueue(int capacity); 
Her,
- Type - typen matriseblokkeringskø
 - kapasitet - størrelsen på array-blokkeringskøen
 
For eksempel,
 // Creating String type ArrayBlockingQueue with size 5 ArrayBlockingQueue animals = new ArrayBlockingQueue(5); // Creating Integer type ArrayBlockingQueue with size 5 ArrayBlockingQueue age = new ArrayBlockingQueue(5); 
Merk: Det er obligatorisk å oppgi størrelsen på matrisen.
Metoder for ArrayBlockingQueue
Den ArrayBlockingQueueklasse gir gjennomføring av alle de metoder i BlockingQueuegrensesnittet.
Disse metodene brukes til å sette inn, få tilgang til og slette elementer fra mateblokkeringskøer.
Vi vil også lære om to metoder put()og take()som støtter blokkeringsoperasjonen i array-blokkeringskøen.
Disse to metodene skiller array-blokkeringskøen fra andre typiske køer.
Sett inn elementer
add()- Setter inn det angitte elementet i array-blokkeringskøen. Det kaster et unntak hvis køen er full.offer()- Setter inn det angitte elementet i array-blokkeringskøen. Den returnererfalsehvis køen er full.
For eksempel,
 import java.util.concurrent.ArrayBlockingQueue; class Main ( public static void main(String() args) ( ArrayBlockingQueue animals = new ArrayBlockingQueue(5); // Using add() animals.add("Dog"); animals.add("Cat"); // Using offer() animals.offer("Horse"); System.out.println("ArrayBlockingQueue: " + animals); ) ) 
Produksjon
ArrayBlockingQueue: (Hund, katt, hest)
Tilgangselementer
peek()- Returnerer et element fra forsiden av array-blokkeringskøen. Den returnerernullhvis køen er tom.iterator()- Returnerer et iteratorobjekt for sekvensielt å få tilgang til elementer fra array-blokkeringskøen. Det kaster et unntak hvis køen er tom. Vi må importerejava.util.Iteratorpakken for å bruke den.
For eksempel,
 import java.util.concurrent.ArrayBlockingQueue; import java.util.Iterator; class Main ( public static void main(String() args) ( ArrayBlockingQueue 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 iterate = animals.iterator(); System.out.print("ArrayBlockingQueue Elements: "); while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) ) 
Produksjon
ArrayBlockingQueue: (Dog, Cat, Horse) Accessed Element: Dog ArrayBlockingQueue Elements: Dog, Cat, Horse,
Fjern elementer
remove()- Returnerer og fjerner et spesifisert element fra array-blokkeringskøen. Det kaster et unntak hvis køen er tom.poll()- Returnerer og fjerner et spesifisert element fra array-blokkeringskøen. Den returnerernullhvis køen er tom.clear()- Fjerner alle elementene fra array-blokkeringskøen.
For eksempel,
 import java.util.concurrent.ArrayBlockingQueue; class Main ( public static void main(String() args) ( ArrayBlockingQueue 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); ) ) 
Produksjon
ArrayBlockingQueue: (Hund, katt, hest) Fjernede elementer: Bruker remove (): Hund bruker avstemning (): Cat Oppdatert ArrayBlockingQueue: ()
put () and take () Metode
I flertrådingsprosesser kan vi bruke put()og take()blokkere driften av en tråd for å synkronisere den med en annen tråd. Disse metodene vil vente til de kan utføres.
put () -metoden
For å legge til et element på slutten av en matriseblokkeringskø, kan vi bruke put()metoden.
Hvis array-blokkeringskøen er full, venter den til det er plass i array-blokkeringskøen for å legge til et element.
For eksempel,
 import java.util.concurrent.ArrayBlockingQueue; class Main ( public static void main(String() args) ( ArrayBlockingQueue 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); ) ) ) 
Produksjon
ArrayBlockingQueue: (Hund, katt)
Her kan put()metoden kaste en InterruptedExceptionhvis den blir avbrutt mens du venter. Derfor må vi legge den inn i en prøve … fangstblokk.
ta () Metode
For å returnere og fjerne et element fra forsiden av array-blokkeringskøen, kan vi bruke take()metoden.
Hvis array-blokkeringskøen er tom, venter den til det er elementer i array-blokkeringskøen som skal slettes.
For eksempel,
 import java.util.concurrent.ArrayBlockingQueue; class Main ( public static void main(String() args) ( ArrayBlockingQueue 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); ) ) ) 
Produksjon
ArrayBlockingQueue: (Dog, Cat) Fjernet Element: Dog
Her vil take()metoden kaste en InterrupedExceptionhvis den blir avbrutt mens du venter. Derfor må vi legge den inn i en try… catchblokk.
Andre metoder
| Metoder | Beskrivelser | 
|---|---|
contains(element) |  Søker i array-blokkeringskøen etter det angitte elementet. Hvis elementet blir funnet, returnerer det true, hvis ikke det returnerer false. |  
size() |  Returnerer lengden på array-blokkeringskøen. | 
toArray() |  Konverterer matriseblokkeringskø til en matrise og returnerer den. | 
toString()  |  Konverterer array-blokkeringskøen til streng | 
Hvorfor bruke ArrayBlockingQueue?
De ArrayBlockingQueueanvendelser arrays som den interne lagring.
Det betraktes som en trådsikker samling. Derfor brukes den vanligvis i applikasjoner med flere tråder.
Anta at en tråd setter inn elementer i køen, og en annen tråd fjerner elementer fra køen.
Nå, hvis den første tråden er tregere enn den andre tråden, kan array-blokkeringskøen få den andre tråden til å vente til den første tråden fullfører sine operasjoner.








