Java中的ArrayBlockingQueue add()方法

Java中的ArrayBlockingQueue add()方法

ArrayBlockingQueue 是一个有限制的阻塞队列,它在内部通过一个数组来维护元素。

  • ArrayBlockingQueue 类是Java集合框架的一部分。
  • 有限制意味着它具有固定大小,您不能存储超出队列容量的元素。
  • 该队列还遵循FIFO(先进先出)规则,用于存储和从队列中删除元素。
  • 如果您尝试将一个元素放入到满队列中或从空队列中取出一个元素,那么队列将会阻塞您。

add (E e) 方法将作为参数传递的元素插入到此队列的 尾部。 如果添加元素超出队列容量,则该方法将抛出IllegalStateException异常。如果元素添加成功,则此方法返回true,否则将抛出IllegalStateException异常。

语法:

public boolean add(E e)

参数:

e – 要添加到队列中的元素。

返回值:

如果添加成功,则返回true。

抛出:

IllegalStateException – 如果此队列已满

NullPointerException – 如果指定的元素为null

示例1

下面的程序说明了向ArrayBlockingQueue添加元素。

// Java程序演示ArrayBlockingQueue的add(E e)方法
//导入java.util.ArrayList和java.util.concurrent.ArrayBlockingQueue。
public class GFG {
  
    public static void main(String[] args)
    {
        //定义ArrayBlockingQueue的容量
        int capacity = 10;
  
        // 创建ArrayBlockingQueue对象
        ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(capacity);
  
        // 向ArrayBlockingQueue添加元素
        queue.add(23);
  
        // 添加操作后打印队列
        System.out.println("添加23之后");
        System.out.println(queue);
  
        // 再添加更多数字
        queue.add(32);
        queue.add(45);
        queue.add(12);
  
        // 添加操作后打印队列
        System.out.println("添加32、45、12之后");
        System.out.println(queue);
  
        // 再添加更多数字
        queue.add(27);
        queue.add(67);
  
        // 添加操作后打印队列
        System.out.println("添加27、67之后");
        System.out.println(queue);
    }
}

输出:

添加23之后
[23]
添加32、45、12之后
[23, 32, 45, 12]
添加27、67之后
[23, 32, 45, 12, 27, 67]

示例2

下面的程序说明了向ArrayBlockingQueue添加元素和在队列已满时抛出异常。

// Java程序演示了ArrayBlockingQueue的add(E e)方法。
// Java Program to Demonstrate add(E e) method
import java.util.ArrayList;
import java.util.concurrent.ArrayBlockingQueue;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        // 定义ArrayBlockingQueue的容量为5个元素。
        int capacity = 5;
  
        // 创建ArrayBlockingQueue对象
        ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(capacity);
  
        // 向ArrayBlockingQueue中添加5个元素。
        queue.add(23);
        queue.add(32);
        queue.add(45);
        queue.add(12);
        queue.add(27);
  
        // 添加元素后打印队列。
        System.out.println("添加5个元素到队列后");
        System.out.println(queue);
  
        // 检查队列是否已满。
        if (queue.remainingCapacity() == 0) {
            System.out.println("队列已满");
        }
        else {
            System.out.println("队列未满");
        }
  
        // 尝试添加更多的元素。
        // 如果抛出异常,则打印异常。
        try {
            Boolean response = queue.add(27);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出:

添加5个元素到队列后
[23, 32, 45, 12, 27]
队列已满
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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程