Java ArrayBlockingQueue

Tässä opetusohjelmassa opitaan ArrayBlockingQueue-luokasta ja sen menetelmistä esimerkkien avulla.

ArrayBlockingQueueLuokka Java kokoelmat politiikalle esto jonon toteutuksen avulla jono.

Se toteuttaa Java BlockingQueue -käyttöliittymän.

ArrayBlockingQueuen luominen

Taulukon estojonon luomiseksi meidän on tuotava java.util.concurrent.ArrayBlockingQueuepaketti.

Kun tuot paketin, voimme luoda taulukon estävän jonon seuraavasti:

 ArrayBlockingQueue animal = new ArrayBlockingQueue(int capacity); 

Tässä,

  • Tyyppi - taulukon estojonon tyyppi
  • kapasiteetti - taulukon estojonon koko

Esimerkiksi,

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

Huomaa: Taulukon koko on pakollinen.

ArrayBlockingQueue-menetelmät

ArrayBlockingQueueLuokka tarjoaa täytäntöönpanoa kaikkien menetelmien BlockingQueueavulla.

Näitä menetelmiä käytetään lisäämään, käyttämään ja poistamaan elementtejä taulukon esto-jonoista.

Lisäksi saamme oppia kaksi tapaa put()ja take()että tuki estävä toiminta jono esto jono.

Nämä kaksi menetelmää erottavat matriisin estävän jonon muista tyypillisistä jonoista.

Lisää elementit

  • add()- Lisää määritetty elementti taulukon esto-jonoon. Se aiheuttaa poikkeuksen, jos jono on täynnä.
  • offer()- Lisää määritetty elementti taulukon esto-jonoon. Se palaa, falsejos jono on täynnä.

Esimerkiksi,

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

Tuotos

 ArrayBlockingQueue: (koira, kissa, hevonen) 

Käytä elementtejä

  • peek()- Palauttaa elementin taulukon estojonon edestä. Se palaa, nulljos jono on tyhjä.
  • iterator()- Palauttaa iteraattoriobjektin pääsemään peräkkäin elementteihin ryhmän estojonosta. Se aiheuttaa poikkeuksen, jos jono on tyhjä. Meidän on tuotava java.util.Iteratorpaketti sen käyttöä varten.

Esimerkiksi,

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

Tuotos

 ArrayBlockingQueue: (koira, kissa, hevonen) Käytetty elementti: Dog ArrayBlockingQueue -elementit: koira, kissa, hevonen, 

Poista elementit

  • remove()- Palauttaa ja poistaa tietyn elementin taulukon esto-jonosta. Se aiheuttaa poikkeuksen, jos jono on tyhjä.
  • poll()- Palauttaa ja poistaa tietyn elementin taulukon esto-jonosta. Se palaa, nulljos jono on tyhjä.
  • clear() - Poistaa kaikki elementit taulukon esto-jonosta.

Esimerkiksi,

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

Tuotos

 ArrayBlockingQueue: (koira, kissa, hevonen) Poistetut elementit: käyttämällä remove (): Koira käyttää kyselyä (): Cat päivitetty ArrayBlockingQueue: () 

put () ja take () menetelmä

Monisäikeisissä prosesseissa voimme käyttää put()ja take()estää yhden säikeen toiminnan synkronoimaan sen toisen säikeen kanssa. Nämä menetelmät odottavat, kunnes ne voidaan suorittaa onnistuneesti.

put () -menetelmä

Jos haluat lisätä elementin taulukon estojonon loppuun, voimme käyttää put()menetelmää.

Jos taulukon esto-jono on täynnä, se odottaa, kunnes taulukon esto-jonossa on tilaa elementin lisäämiseksi.

Esimerkiksi,

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

Tuotos

 ArrayBlockingQueue: (koira, kissa) 

Tässä put()menetelmä voi heittää, InterruptedExceptionjos se keskeytyy odottaessaan. Siksi meidän on suljettava se try … catch blockiin.

ota () menetelmä

Palataksemme ja poistamalla elementin taulukon estojonon etuosasta voimme käyttää take()menetelmää.

Jos taulukon esto-jono on tyhjä, se odottaa, että taulukon esto-jonossa on elementtejä poistettavia.

Esimerkiksi,

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

Tuotos

 ArrayBlockingQueue: (koira, kissa) poistettu elementti: koira 

Tässä take()menetelmä heittää, InterrupedExceptionjos se keskeytyy odottaessaan. Siksi meidän on suljettava se try… catchkorttelin sisään.

Muut menetelmät

Menetelmät Kuvaukset
contains(element) Hakee määritetyn elementin taulukon esto-jonoa. Jos elementti löytyy, se palaa true, jos ei, se palaa false.
size() Palauttaa taulukon estojonon pituuden.
toArray() Muuntaa taulun estävän jonon matriisiksi ja palauttaa sen.
toString() Muuntaa taulukon estävän jonon merkkijonoksi

Miksi käyttää ArrayBlockingQueue-ohjelmaa?

ArrayBlockingQueueKäyttää suurta joukkoa kuin sen sisäiseen muistiin.

Sitä pidetään langattomaksi kokoelmaksi. Siksi sitä käytetään yleensä monisäikeisissä sovelluksissa.

Oletetaan, että yksi säie lisää elementtejä jonoon ja toinen säie poistaa elementtejä jonosta.

Nyt, jos ensimmäinen ketju on hitaampi kuin toinen ketju, matriisin estävä jono voi saada toisen ketjun odottamaan, kunnes ensimmäinen ketju on suorittanut toimintansa.

Mielenkiintoisia artikkeleita...