當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java ArrayBlockingQueue add()用法及代碼示例


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)



相關用法


注:本文由純淨天空篩選整理自AmanSingh2210大神的英文原創作品 ArrayBlockingQueue add() method in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。