An ArrayBlockingQueue is a queue returned by an array that have a limitation. It is a "bounded buffer" in which elements are helds in a constant size array.
Java Collections Framework - ArrayBlockingQueue class
An ArrayBlockingQueue is a queue returned by an array that have a limitation. It is a "bounded buffer" in which elements are helds in a constant size array. Once the capacity of this queue is defined it can not be grew up, if you will try to put element into the full queue will result in a blocking wait and similarly, obtain the element from vacate queue will block. In this queue the elements are ordered in FIFO (First-In-First-Out). In this queue the element that has been the highest time on the queue is the head element, and the element that has been the minimum time on the queue is the tail element of the queue. Insertion of an element in this queue is happened at tail and the element is retrieved from the head position.
All of the optional methods of the Collection and Iterator interfaces are implemented by this class and its iterator.
Syntax
public class ArrayBlockingQueue<E>
Parameter description
E : It is the element's type that's held in this collection.
Constructor of ArrayBlockingQueue class are :
- ArrayBlockingQueue(int capacity) : With the constant capability and default way of accessing this constructor makes an ArrayBlockingQueue.
- ArrayBlockingQueue(int capacity, boolean fair) : With the constant capability and the specified way of accessing this constructor makes an ArrayBlockingQueue.
- ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c) : With the constant capability, the specified way of accessing and the elements of the given collection this constructor makes an ArrayBlockingQueue, that are appended in collection's iterator traversing order.
Example :
Here we give a simple example which will illustrate you to how can you use the methods of ArrayBlockingQueue class.
package devmanuals.com; import java.util.concurrent.ArrayBlockingQueue; import java.util.Iterator; public class ArrayBlockingQueueDemo { public static void main(String args[]) { ArrayBlockingQueue abq = new ArrayBlockingQueue(10); abq.add(1); abq.add(2); abq.add(3); abq.add(4); abq.add(5); System.out.println("Elements of queue1= " + abq); ArrayBlockingQueue abq1 = new ArrayBlockingQueue(10); abq1.offer("A"); abq1.offer("B"); abq1.offer("C"); abq1.offer("D"); abq1.offer("E"); abq1.offer("F"); System.out.println("Elements of queue2 = " + abq1); int i = abq.drainTo(abq1, 4); System.out.println("Now elements of queue2 = " + abq1); System.out.println("Rest element of queue1 = " + abq); Iterator it = abq1.iterator(); System.out.println("Elements of queue2 using iterator = "); while (it.hasNext()) { System.out.println(it.next()); } Object obj = abq1.peek(); System.out.println("The head element of queue2 = " + obj); Object obj1 = abq1.poll(); System.out.println("Elements of queue2 = " + abq1); System.out.println("The removed head element = " + obj1); int i1 = abq1.size(); System.out.println("Size of queue2 = " + i1); int i2 = abq.size(); System.out.println("Size of queue1 = " + i2); } }
Output :
Elements of queue1= [1, 2, 3, 4, 5] Elements of queue2 = [A, B, C, D, E, F] Now elements of queue2 = [A, B, C, D, E, F, 1, 2, 3, 4] Rest element of queue1 = [5] Elements of queue2 using iterator = A B C D E F 1 2 3 4 The head element of queue2 = A Elements of queue2 = [B, C, D, E, F, 1, 2, 3, 4] The removed head element = A Size of queue2 = 9 Size of queue1 = 1 |
[ 0 ] Comments