Java ArrayBlockingQueue

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 returnerer falsehvis 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 returnerer nullhvis 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å importere java.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 returnerer nullhvis 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.

Interessante artikler...