Java ArrayBlockingQueue

V tej vadnici bomo s pomočjo primerov spoznali razred ArrayBlockingQueue in njegove metode.

ArrayBlockingQueueRazred okvira Java Collections omogoča izvajanje zaporne čakalne vrste z uporabo niz.

Izvaja vmesnik Java BlockingQueue.

Ustvarjanje ArrayBlockingQueue

Če želite ustvariti čakalno vrsto, ki blokira matriko, moramo uvoziti java.util.concurrent.ArrayBlockingQueuepaket.

Ko uvozimo paket, lahko v Javi ustvarimo čakalno vrsto, ki blokira matriko:

 ArrayBlockingQueue animal = new ArrayBlockingQueue(int capacity); 

Tukaj,

  • Type - vrsta čakalne vrste, ki blokira polje
  • capacity - velikost čakalne vrste, ki blokira polje

Na primer

 // Creating String type ArrayBlockingQueue with size 5 ArrayBlockingQueue animals = new ArrayBlockingQueue(5); // Creating Integer type ArrayBlockingQueue with size 5 ArrayBlockingQueue age = new ArrayBlockingQueue(5); 

Opomba: Navesti je treba velikost polja.

Metode ArrayBlockingQueue

ArrayBlockingQueueRazred zagotavlja izvajanje vseh metod v BlockingQueuevmesniku.

Te metode se uporabljajo za vstavljanje, dostop in brisanje elementov iz čakalnih vrst, ki blokirajo polja.

Prav tako bomo spoznali dva načina put()in take()to podporo, ki blokira delovanje v polje blokiranja čakalno vrsto.

Ti dve metodi ločujeta čakalno vrsto, ki blokira matriko, od drugih tipičnih čakalnih vrst.

Vstavi elemente

  • add()- Vstavi navedeni element v čakalno vrsto, ki blokira matriko. Vrže izjemo, če je vrsta polna.
  • offer()- Vstavi navedeni element v čakalno vrsto, ki blokira polje. Vrne se, falseče je vrsta polna.

Na primer

 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); ) ) 

Izhod

 ArrayBlockingQueue: (pes, mačka, konj) 

Dostop do elementov

  • peek()- Vrne element s sprednje strani čakalne vrste blokade matrike. Vrne se, nullče je vrsta prazna.
  • iterator()- Vrne predmet iteratorja za zaporedni dostop do elementov iz čakalne vrste, ki blokira polje. Vrže izjemo, če je vrsta prazna. java.util.IteratorPaket moramo uvoziti, da ga uporabimo.

Na primer

 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(", "); ) ) ) 

Izhod

 ArrayBlockingQueue: (Dog, Cat, Horse) Dostopni element: Dog ArrayBlockingQueue Elements: Dog, Cat, Horse, 

Odstrani elemente

  • remove()- Vrne in odstrani določen element iz čakalne vrste, ki blokira matriko. Vrže izjemo, če je vrsta prazna.
  • poll()- Vrne in odstrani določen element iz čakalne vrste, ki blokira matriko. Vrne se, nullče je vrsta prazna.
  • clear() - Odstrani vse elemente iz čakalne vrste za blokiranje matrike.

Na primer

 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); ) ) 

Izhod

 ArrayBlockingQueue: (pes, mačka, konj) Odstranjeni elementi: z uporabo remove (): pes z anketo (): Cat posodobljen ArrayBlockingQueue: () 

put () in take () Metoda

V večnitnih procesih lahko uporabimo put()in take()blokiramo delovanje ene niti, da jo sinhroniziramo z drugo nitjo. Te metode bodo počakale, da jih bo mogoče uspešno izvesti.

metoda put ()

Če želimo element dodati na konec čakalne vrste, ki blokira polje, lahko uporabimo put()metodo.

Če je čakalna vrsta zaporedja polna, počaka, dokler v čakalni vrsti ni na voljo prostora za dodajanje elementa.

Na primer

 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); ) ) ) 

Izhod

 ArrayBlockingQueue: (pes, mačka) 

Tu lahko put()metoda vrže an, InterruptedExceptionče je med čakanjem prekinjena. Zato ga moramo priložiti bloku try… catch.

metoda take ()

Za vrnitev in odstranitev elementa s sprednje strani čakalne vrste blokov polja lahko uporabimo take()metodo.

Če je čakalna vrsta matrike prazna, počaka, da se v čakalni vrsti blokov polja izbrišejo elementi.

Na primer

 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); ) ) ) 

Izhod

 ArrayBlockingQueue: (Dog, Cat) Odstranjen element: Dog 

Tu bo take()metoda vrgla, InterrupedExceptionče je med čakanjem prekinjena. Zato ga moramo zapreti v try… catchblok.

Druge metode

Metode Opisi
contains(element) Išče čakalno vrsto za blokiranje polja za navedeni element.Če je element najden, se vrne true, če ne, se vrne false.
size() Vrne dolžino čakalne vrste, ki blokira polje.
toArray() Blokira čakalno vrsto matrike v matriko in jo vrne.
toString() Blokira čakalno vrsto matrike v niz

Zakaj uporabljati ArrayBlockingQueue?

V ArrayBlockingQueueuporabe nizi njen notranji pomnilnik.

Šteje se kot zbirka, varna za nit . Zato se običajno uporablja v večnitnih aplikacijah.

Recimo, da ena nit vstavlja elemente v čakalno vrsto, druga nit pa elemente iz čakalne vrste.

Če je prva nit počasnejša od druge niti, lahko čakalna vrsta zaporedja čakal, dokler prva nit ne zaključi svojih operacij.

Zanimive Članki...