ArrayBlockingQueue Java 中的 remainingCapacity() 方法
ArrayBlockingQueue 是一个有界的、支持阻塞的队列,它在内部使用数组存储元素。
- ArrayBlockingQueue 类是 Java 集合框架的成员。
- 有界意味着它将具有固定大小,你不能存储比队列容量更多的元素。
- 该队列还遵循先进先出的规则,用于存储和移除元素。
- 如果你试图将一个元素放入已满的队列中,或从一个空队列中取出一个元素,则队列会阻塞你。
remainingCapacity() 方法返回可以添加到队列中而不阻塞的更多元素的数量。这总是等于此队列的初始容量和当前大小之间的差异。
语法:
public int remainingCapacity()
参数: 该方法不需要任何参数。
返回值: 该方法返回队列的剩余容量。
下面的程序演示了 ArrayBlockingQueue 的 remainingCapacity() 方法:
程序 1:
// 程序演示 remainingCapacity() 方法的使用
// of ArrayBlockingQueue
import java.util.concurrent.ArrayBlockingQueue;
public class GFG {
public static void main(String[] args)
{
// 定义 ArrayBlockingQueue 的容量
int capacity = 5;
// 创建 ArrayBlockingQueue 对象
ArrayBlockingQueue<Integer> queue = new
ArrayBlockingQueue<Integer>(capacity);
// 向 ArrayBlockingQueue 添加元素
queue.add(23);
queue.add(32);
// 添加数字后打印队列
System.out.println("Queue :" + queue);
// 检查剩余容量
int remainingCapacity = queue.remainingCapacity();
System.out.println("剩余容量为: " +
remainingCapacity);
// 向 ArrayBlockingQueue 添加元素
queue.add(54);
queue.add(78);
// 添加数字后打印队列
System.out.println("Queue :" + queue);
// 检查剩余容量
System.out.println("剩余容量为: " +
queue.remainingCapacity());
}
}
Queue :[23, 32]
剩余容量为:3
Queue :[23, 32, 54, 78]
剩余容量为:1
程序 2:
// 用于展示 ArrayBlockingQueue 的 remainingCapacity() 方法的程序
//
import java.util.concurrent.ArrayBlockingQueue;
public class GFG {
// 创建一个 User 对象,其中包含名字和年龄两个属性
public class User {
public String name;
public String age;
User(String name, String age)
{
this.name = name;
this.age = age;
}
}
// 主方法
public static void main(String[] args)
{
GFG gfg = new GFG();
gfg.RemainingCapacityExample();
}
// 用于演示 remaining capacity 函数的方法
public void RemainingCapacityExample()
{
// 定义 ArrayBlockingQueue 的容量
int capacity = 5;
// 创建 ArrayBlockingQueue 的对象
ArrayBlockingQueue<User> queue = new
ArrayBlockingQueue<User>(capacity);
// 创建 User 对象
User user1 = new User("Aman", "24");
User user2 = new User("Amar", "23");
User user3 = new User("Sanjeet", "25");
// 将对象添加到 ArrayBlockingQueue 中
queue.offer(user1);
queue.offer(user2);
queue.offer(user3);
// 检查 remaining capacity
int remainingCapacity = queue.remainingCapacity();
System.out.println("Remaining Capacity:" +
remainingCapacity);
User user4 = new User("Suvo", "26");
User user5 = new User("Ravi", "22");
// 添加更多的对象
queue.offer(user2);
queue.offer(user3);
// 再次检查 remaining capacity
remainingCapacity = queue.remainingCapacity();
System.out.println("Remaining Capacity:" +
remainingCapacity);
}
}
Remaining Capacity:2
Remaining Capacity:0
参考文献: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ArrayBlockingQueue.html#remainingCapacity()
极客教程