ArrayBlockingQueue是有界的阻塞隊列,該隊列內部使用數組支持的元素存儲。
- ArrayBlockingQueue類是Java Collections Framework的成員。
- 有界意味著它將具有固定的大小,您不能存儲數量超過隊列容量的元素。
- 隊列還遵循FIFO(先進先出)規則,用於存儲和刪除隊列中的元素。
- 如果您嘗試將一個元素放入一個完整的隊列或從一個空隊列中取出一個元素,那麽該隊列將阻塞。
add(E e)方法將作為參數傳遞的元素插入此隊列尾部。如果添加的元素超過了隊列的容量,則該方法將拋出IllegalStateException。如果添加元素成功,則此方法返回true,否則將拋出IllegalStateException。
用法:
public boolean add(E e)
參數:
e –要添加到隊列中的元素。
返回值:
如果添加成功,則返回true。
拋出:
IllegalStateException-如果此隊列已滿
NullPointerException-如果指定的元素為null
例子1
以下示例程序旨在說明向ArrayBlockingQueue添加元素。
// Java Program to Demonstrate add(E e) method
// of ArrayBlockingQueue.
import java.util.ArrayList;
import java.util.concurrent.ArrayBlockingQueue;
public class GFG {
public static void main(String[] args)
{
// define capacity of ArrayBlockingQueue
int capacity = 10;
// create object of ArrayBlockingQueue
ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(capacity);
// Add element to ArrayBlockingQueue
queue.add(23);
// print queue after add operation
System.out.println("After adding 23");
System.out.println(queue);
// add more numbers
queue.add(32);
queue.add(45);
queue.add(12);
// print queue after add operation
System.out.println("After adding 32, 45, 12");
System.out.println(queue);
// add more numbers
queue.add(27);
queue.add(67);
// print queue after add operation
System.out.println("After adding 27, 67");
System.out.println(queue);
}
}
Output : After adding 23 [23] After adding 32, 45, 12 [23, 32, 45, 12] After adding 27, 67 [23, 32, 45, 12, 27, 67]
例子2
以下示例程序旨在說明將Element添加到ArrayBlockingQueue以及在隊列已滿時引發的異常。
// Java Program to Demonstrate add(E e) method
// of ArrayBlockingQueue.
import java.util.ArrayList;
import java.util.concurrent.ArrayBlockingQueue;
public class GFG {
public static void main(String[] args)
{
// define capacity of ArrayBlockingQueue to 5 elements
int capacity = 5;
// create object of ArrayBlockingQueue
ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(capacity);
// Add 5 element to ArrayBlockingQueue
queue.add(23);
queue.add(32);
queue.add(45);
queue.add(12);
queue.add(27);
// print queue after add operation
System.out.println("After adding all 5 elements to queue");
System.out.println(queue);
// check whether queue is full or not.
if (queue.remainingCapacity() == 0) {
System.out.println("Queue is full");
}
else {
System.out.println("Queue is not full");
}
// try to add more elements
// If exception thrown print the exception.
try {
Boolean response = queue.add(27);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Output : After adding all 5 elements to queue [23, 32, 45, 12, 27] Queue is full java.lang.IllegalStateException: Queue full at java.util.AbstractQueue.add(Unknown Source) at java.util.concurrent.ArrayBlockingQueue.add(Unknown Source) at defaultpackage.GFG.main(GFG.java:38)
參考:
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ArrayBlockingQueue.html#add(E)
相關用法
- Java ArrayBlockingQueue take()用法及代碼示例
- Java ArrayBlockingQueue contains()用法及代碼示例
- Java ArrayBlockingQueue put()用法及代碼示例
- Java ArrayBlockingQueue offer()用法及代碼示例
- Java ArrayBlockingQueue remainingCapacity()用法及代碼示例
- Java ArrayBlockingQueue iterator()用法及代碼示例
- Java ArrayBlockingQueue toArray()用法及代碼示例
- Java ArrayBlockingQueue spliterator()用法及代碼示例
- Java ArrayBlockingQueue remove()用法及代碼示例
- Java ArrayBlockingQueue clear()用法及代碼示例
- Java ArrayBlockingQueue peek()用法及代碼示例
- Java ArrayBlockingQueue size()用法及代碼示例
- Java ArrayBlockingQueue toString()用法及代碼示例
- Java ArrayBlockingQueue drainTo()用法及代碼示例
- Java ArrayBlockingQueue poll()用法及代碼示例
注:本文由純淨天空篩選整理自AmanSingh2210大神的英文原創作品 ArrayBlockingQueue add() method in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。