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

arrayblockingqueue java_Java ArrayBlockingQueue take()用法及代码示例相关推荐

  1. reset java_Java PushbackReader reset()用法及代码示例

    Java中的PushbackReader类的reset()方法用于重置Stream.对于PushbackReader,此方法始终会引发异常,因为PushbackReader不支持此方法. 用法: pu ...

  2. list indexof java_Java List indexOf()用法及代码示例

    此方法返回此列表中指定元素的第一个匹配项的索引:如果此列表不包含该元素,则返回-1. 用法: public int indexOf(Object o) 参数:该函数具有单个参数,即列表中要搜索的元素. ...

  3. clear java_Java ConcurrentLinkedDeque clear()用法及代码示例

    java.util.concurrent.ConcurrentLinkedDeque.clear()方法是Java中的内置方法,它删除了Deque中的元素. 用法: public void clear ...

  4. contains java_Java CopyOnWriteArraySet contains()用法及代码示例

    CopyOnWriteArraySet的contains(E e)方法检查Set中是否存在给定元素. 用法: public boolean contains(Object o) 参数:该函数接受单个强 ...

  5. getsize java_Java ZipEntry getSize()用法及代码示例

    getSize()函数是java.util.zip软件包的一部分.该函数返回作为参数传递的特定ZipEntry的未压缩大小,如果未知则返回-1.函数签名: public long getSize() ...

  6. or函数 java_Java OptionalInt orElseGet()用法及代码示例

    orElseGet(java.util.function.IntSupplier)方法可帮助我们获取此OptionalInt对象中的值.如果此OptionalInt中不存在值,则此方法返回提供函数产生 ...

  7. roll() java_Java Calendar roll()用法及代码示例

    Calendar类中的roll(int calndr_field,boolean up_down)方法用于通过上下移动传递的字段单个时间单位来对传递的日历字段进行操作.这涉及在不更改较大字段的情况下对 ...

  8. check的用法java_Java ChronoField checkValidValue()用法及代码示例

    ChronoField枚举的checkValidValue()方法用于检查作为参数传递的值对于ChronoField常数是否有效. 用法: public long checkValidValue(lo ...

  9. rewind java_Java LongBuffer rewind()用法及代码示例

    java.nio.LongBuffer类的rewind()方法用于倒带此缓冲区.通过倒带此Buffer,可以执行以下操作: 当前位置设置为零 如果有标记,则将其丢弃,但标记值不变. 用法: publi ...

  10. increment java_Java LongAdder increment()用法及代码示例

    Java中的LongAdder类创建一个初始和为零的新加法器. Java.LongAdder.increment()是Java中的内置方法,可将值增加1. 用法: public void increm ...

最新文章

  1. post传值php取不到数据,post请求中的参数形式和form-data提交数据时取不到的问题...
  2. PostgreSQL查询优化器之grouping_planner
  3. 找到二叉树中的最大搜索子树
  4. java 修饰符作用_Java关键字修饰符的作用范围
  5. ​数据分析最重要的 3 种特征编码,你真的能分清楚?
  6. CSS中的未定义行为,浏览器的差异(一)
  7. java 字符串拆分成单个字符放到 list 集合
  8. 云上远程运维的最后那点担心,“云梯”帮你解决
  9. 帝国cms模板嵌入php,帝国cms模板中php调用信息的例子
  10. 博客转移到cnblogs
  11. 悟透JavaScript--可爱与智慧并存,灵感与诙谐共生
  12. Vue2+Vant2:一个可定制图标的简易扫雷小游戏
  13. 什么是云中台系统_什么是云中的超融合?
  14. Mac 中composer的安装
  15. 高考恋爱100天 完全攻略
  16. TCP粘包是什么?如何处理?UDP有粘包吗?
  17. 从知识溢出的视角分析开放式协作
  18. labelimg win10安装教程
  19. 关于构建umi+dva+ant react项目 附源码
  20. 抗体的N端或C端进行修饰ADC偶联物的过程-瑞禧

热门文章

  1. 年底看机会,欢迎加入Java大数据招聘群!
  2. nn.functional.normalize
  3. R语言——自定义函数求置信区间
  4. html中background标签作用,CSS Background 属性详解
  5. 王健林:万达体育和传奇影业都要开展资本运作 今年要出成绩
  6. 微软必应Bing搜索引擎这几天无法访问!
  7. 曙光服务器怎么修改启动项,简单易上手 戴尔T5500工作站BIOS全设置
  8. Java常用的开发软件下载地址以及问题解决
  9. DOSBox常用快捷键
  10. 在web页面实时播放监控视频