Јава АрраиБлоцкингКуеуе

У овом упутству ћемо научити о класи АрраиБлоцкингКуеуе и њеним методама уз помоћ примера.

ArrayBlockingQueueКласа оквира Јава Колекције обезбеђује спровођење блокирању куеуе користећи низ.

Примењује интерфејс Јава БлоцкингКуеуе.

Креирање АрраиБлоцкингКуеуе

Да бисмо креирали ред за блокирање низа, морамо увести java.util.concurrent.ArrayBlockingQueueпакет.

Једном када увозимо пакет, ево како можемо створити ред за блокирање низа у Јави:

 ArrayBlockingQueue animal = new ArrayBlockingQueue(int capacity); 

Ево,

  • Тип - врста реда за блокирање низа
  • капацитет - величина реда за блокирање низа

На пример,

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

Напомена: Обавезно је навести величину низа.

Методе АрраиБлоцкингКуеуе

ArrayBlockingQueueКласа обезбеђује примену свих метода у BlockingQueueинтерфејсу.

Ове методе се користе за уметање, приступ и брисање елемената из редова који блокирају низ.

Такође, научићемо о две методе put()и take()које подржавају операцију блокирања у реду за блокирање низа.

Ове две методе разликују ред за блокирање низа од осталих типичних редова.

Уметни елементе

  • add()- Убацује наведени елемент у ред за блокирање низа. Добавља изузетак ако је ред пун.
  • offer()- Убацује наведени елемент у ред за блокирање низа. Враћа се falseако је ред пун.

На пример,

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

Оутпут

 АрраиБлоцкингКуеуе: (пас, мачка, коњ) 

Приступ елементима

  • peek()- Враћа елемент са предње стране реда за блокирање низа. Враћа се nullако је ред празан.
  • iterator()- Враћа објект итератора за секвенцијални приступ елементима из реда за блокирање низа. Добавља изузетак ако је ред празан. Морамо увести java.util.Iteratorпакет да бисмо га користили.

На пример,

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

Оутпут

 АрраиБлоцкингКуеуе: (Пас, Мачка, Коњ) Приступљени елемент: Пас АрраиБлоцкингКуеуе Елементи: Пас, Мачка, Коњ, 

Уклоните елементе

  • remove()- Враћа и уклања наведени елемент из реда за блокирање низа. Добавља изузетак ако је ред празан.
  • poll()- Враћа и уклања наведени елемент из реда за блокирање низа. Враћа се nullако је ред празан.
  • clear() - Уклања све елементе из реда за блокирање низа.

На пример,

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

Оутпут

 АрраиБлоцкингКуеуе: (Пас, Мачка, Коњ) Уклоњени елементи: Коришћење ремове (): Пас Коришћење анкете (): Ажурирано АрраиБлоцкингКуеуе: () 

пут () и таке () Метода

У вишенитним процесима можемо да користимо put()и take()да блокирамо рад једне нити да бисмо је синхронизовали са другом нити. Ове методе ће сачекати док се не могу успешно извршити.

пут () метода

Да бисмо додали елемент на крај реда за блокирање низа, можемо користити put()методу.

Ако је ред за блокирање низа пун, чека се док у реду за блокирање низа нема места за додавање елемента.

На пример,

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

Оутпут

 АрраиБлоцкингКуеуе: (пас, мачка) 

Овде put()метода може бацити знак InterruptedExceptionако се прекине док се чека. Стога га морамо приложити унутар блока три… цатцх.

таке () метода

Да бисмо вратили и уклонили елемент са предње стране реда за блокирање низа, можемо користити take()методу.

Ако је ред за блокирање низа празан, чека се док се у реду за блокирање низа не избришу елементи.

На пример,

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

Оутпут

 АрраиБлоцкингКуеуе: (Пас, Мачка) Уклоњени елемент: Пас 

Овде ће take()метода бацити знак InterrupedExceptionиф ако је прекинут док се чека. Стога га морамо затворити у try… catchблок.

Остале методе

Методе Описи
contains(element) Претражује ред за блокирање низа за наведени елемент. Ако је елемент пронађен, он се враћа true, ако не, враћа се false.
size() Враћа дужину реда за блокирање низа.
toArray() Претвара ред за блокирање низа у низ и враћа га.
toString() Претвара ред за блокирање низа у низ

Зашто користити АрраиБлоцкингКуеуе?

Тхе ArrayBlockingQueueкористи низови као свој интерне меморије.

Сматра се колекцијом безбедном за конац . Стога се обично користи у апликацијама са више навоја.

Претпоставимо да једна нит убацује елементе у ред, а друга нит уклања елементе из реда.

Сада, ако је прва нит спорија од друге нити, тада ред за блокирање низа може учинити да друга нит чека док прва нит не заврши своје операције.

Занимљиви Чланци...