arrayblockingqueue java_Java ArrayBlockingQueue take()用法及代码示例

ArrayBlockingQueue是有界的阻塞队列,该队列内部使用数组支持的元素存储。

ArrayBlockingQueue类是Java Collections Framework的成员。

有界意味着它将具有固定的大小,您不能存储数量超过队列容量的元素。

队列还遵循FIFO(先进先出)规则,用于存储和删除队列中的元素。

如果您尝试将一个元素放入一个完整的队列或从一个空队列中取出一个元素,那么该队列将阻塞。

take()方法用于检索和删除此队列的头。如果队列为空,则它将等待直到元素可用。

用法:

public E take()throws InterruptedException

参数:该方法不带任何参数。

返回值:该方法返回此队列开头的值。

异常:如果在等待时被中断,该方法将抛出InterruptedException。

以下示例程序旨在说明ArrayBlockingQueue的take()方法:

程序1:

// Program to demonstrate take() method of ArrayBlockingQueue

import java.util.concurrent.ArrayBlockingQueue;

public class GFG {

public static void main(String[] args)

throws InterruptedException{

// Define capacity of ArrayBlockingQueue

int capacity = 5;

// Create object of ArrayBlockingQueue

ArrayBlockingQueue queue =

new ArrayBlockingQueue(capacity);

// Add elements to ArrayBlockingQueue

queue.add(23);

queue.add(32);

queue.add(45);

queue.add(12);

// Print queue after adding numbers

System.out.print("After addding numbers Queue: "

+queue);

// Apply take() method

int head=queue.take();

// Print head of queue using take() method

System.out.println("Head of queue removed is "

+head);

System.out.print("After removing head. Queue: ");

System.out.println(queue);

// Apply take() method

head = queue.take();

// Print head of queue using take() method

System.out.println("Head of queue removed is "

+ head);

System.out.print("After removing head. Queue: ");

System.out.println(queue);

}

}

输出:

After addding numbers Queue: [23, 32, 45, 12]Head of queue removed is 23

After removing head. Queue: [32, 45, 12]

Head of queue removed is 32

After removing head. Queue: [45, 12]

示例2:

// Program to demonstrate take() method of ArrayBlockingQueue

import java.util.concurrent.ArrayBlockingQueue;

public class GFG {

// Create a User Object with name

// and age as the attribute

public class User {

public String name;

public String age;

User(String name, String age)

{

this.name = name;

this.age = age;

}

}

// Main Method

public static void main(String[] args)

throws InterruptedException

{

GFG gfg = new GFG();

gfg.takeMethodExample();

}

// Method to give example of take function

public void takeMethodExample()

throws InterruptedException

{

// define capacity of ArrayBlockingQueue

int capacity = 5;

// create object of ArrayBlockingQueue

ArrayBlockingQueue queue =

new ArrayBlockingQueue(capacity);

// create user objects

User user1 = new User("Aman", "24");

User user2 = new User("Amar", "23");

User user3 = new User("Sanjeet", "25");

User user4 = new User("Suvo", "26");

User user5 = new User("Ravi", "22");

// Add Objects to ArrayBlockingQueue

queue.offer(user1);

queue.offer(user2);

queue.offer(user3);

queue.offer(user4);

queue.offer(user5);

// find take() of queue

User head = queue.take();

// print head

System.out.println("Details of User Removed"

+" After Applying take() Method");

System.out.println("User Name : " + head.name);

System.out.println("User Age : " + head.age);

// find take() of queue

head = queue.take();

// print head

System.out.println("Details of User Removed"+

" After Applying take() Method");

System.out.println("User Name : " + head.name);

System.out.println("User Age : " + head.age);

}

}

输出:

Details of User Removed After Applying take() Method

User Name : Aman

User Age : 24

Details of User Removed After Applying take() Method

User Name : Amar

User Age : 23

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值