Java中的PriorityBlockingQueue

介绍:

Java中的PriorityBlockingQueue实现了BlockingQueue接口并支持PriorityQueue的功能。 那么,什么是BlockingQueue?

以下适用于BlockingQueue的任何实现:

  • 尝试检索元素时,如果队列为空,线程将等待
  • 在有限制的BlockingQueue实现的情况下,线程将等待直到它有空间插入新元素

PriorityBlockingQueuejava.util.concurrent包中存在的无限制并发阻塞队列它不允许值。

PriorityBlockingQueue中的元素根据其优先进行轮询。 默认情况下,对象的自然顺序被视为其优先级。 我们可以通过实现Comparable接口或提供Comparator来覆盖默认优先级。

假设我们有一个PriorityBlockingQueue,其中有两个或更多具有最高优先级的元素。 在这种情况下,轮询将随机返回其中之一。

创建

我们可以使用以下构造函数之一来实例化PriorityBlockingQueue

//creates an empty PriorityBlockingQueue with capacity of 11
PriorityBlockingQueue()//creates a PriorityBlockingQueue containing elements of c
PriorityBlockingQueue(Collection c)//uses given initialCapacity to instantiate a PriorityBlockingQueue
PriorityBlockingQueue(int initialCapacity)/*creates an empty PriorityBlockingQueue with given initialCapacity
* which orders its elements using given comparator
*/
PriorityBlockingQueue(int initialCapacity, Comparator comparator)

常用方法:

让我们快速看一下在使用PriorityBlockingQueue时可以使用的方法:

1.插入:

要将元素插入PriorityBlockingQueue ,我们可以使用以下任何一种方法:

  • 布尔值add(E e)
  • 布尔报价(E e)
  • 无效推(E e)
PriorityBlockingQueue<Integer> pbq = new PriorityBlockingQueue<>();pbq.add(4);    //Or
pbq.offer(1);  //Or
pbq.put(8);

由于PriorityBlockingQueue是不受限制的,因此它们的行为均相同。 换句话说, offer(e)绝不会返回falseput(e)绝不会阻止该操作。

2.删除:

我们可以通过以下方式之一删除PriorityBlockingQueue中的元素:

  • boolean remove(Object obj):此方法删除对象obj(如果存在)并返回true 。 如果不存在这样的元素,则返回false
    //Assuming pbq has [1, 4, 8] as its elements boolean result = pbq.remove(4); //true   System.out.println(pbq); [1, 8]
  • E poll(): poll()方法同时检索和删除队列的head元素。 如果队列为空,则返回null
    //Assuming pbq has [1, 4, 8] as its elements int polledItem = pbq.poll(); //1   System.out.println(pbq); [4, 8]
  • E take()抛出InterruptedException:poll()一样 ,它检索并删除给定队列开头的元素。 但是, 它将进行阻塞调用,即,如有必要,它将等待直到元素可用

3.其他方法:

其他常用的方法包括:

  • e peek():检索而不是从队列中删除元素
    //Assuming pbq has [1, 4, 8] as its elements
    int item = pbq.peek(); //1System.out.println(pbq); [1, 4, 8]

  • boolean contains(Object obj):检查给定的ob j是否存在于队列中
  • int size():返回队列的大小
  • void clear():删除队列中的所有元素
  • Object [] toArray():返回一个数组,该数组包含上下文中队列的所有元素
  • 比较器比较器():返回比较器用于排序队列中的元素
  • intrainToTo(Collection c):删除队列中所有可用的元素,并将它们添加到给定的Collection中 。 它还返回传输的元素数
  • intrainTo(Collection c,int maxElements):从队列中移除最多maxElements个元素,并将其添加到给定的Collection c中

结论:

在本快速教程中,我们探讨了PriorityBlockingQueue是什么以及如何使用它。 它是线程安全的实现,并阻止轮询,直到某个元素可用为止。

成为第一个发表评论的人。

翻译自: https://www.javacodegeeks.com/2019/05/priorityblockingqueue-java.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 火狐 插件,最新Android版Firefox浏览器不再支持现有插件

原标题&#xff1a;最新Android版Firefox浏览器不再支持现有插件火狐背后的非盈利组织Mozilla最近还为Android重新设计了浏览器&#xff0c;几乎丢掉了用户多年来习惯的许多惯例和功能&#xff0c;只有少数插件在新版Android浏览器启动时可以使用。在某种程度上&#xff0c;新的…

ZigBee网络架构详解

在万物互联-物联网的背景下&#xff0c;zigbee网络应用越加广泛&#xff0c;zigbee技术具有强大的组网能力&#xff0c;可以形成星型、树型和网状网3种结构&#xff0c;这三种网络结构各有优势&#xff0c;大家可以根据实际项目需要来选择合适的zigbee网络结构。下面亿佰特就为…

【渝粤教育】国家开放大学2018年秋季 1137t医院管理 参考试题

第一部 交际用语&#xff08;共计10分&#xff0c;每小题2分&#xff09; 1&#xff0d;5小题&#xff1a;阅读下面的小对话&#xff0c;从A、B、C三个选项中选出一个能填入空白处的最佳选项&#xff0c;并在答题纸上写出所选的字母符号。 1&#xff0e;&#xff0d;May I help…

同一交换机的不同VLAN如何隔离?

三层交换机下的VLAN划分&#xff0c;本身就已经做到了隔离&#xff0c;无法通信&#xff0c;VLAN的作用是可以隔离冲突域和广播域。那么&#xff0c;同一交换机不同VLAN如何隔离呢&#xff1f;接下来我们就跟随飞畅科技的小编一起来详细了解下吧&#xff01; 什么是VLAN&#…

1G、3G都失败了,5G也会失败吗?

在我们通信行业里&#xff0c;一直都有这么个说法——通信标准如果是单数&#xff0c;一定失败&#xff0c;如果是双数&#xff0c;一定成功。 什么意思呢&#xff1f;就是说&#xff0c;像1G、3G这样的单数通信标准&#xff0c;都失败了。而2G、4G这样的双数标准&#xff0c;…

【渝粤教育】国家开放大学2018年秋季 1306T社会政策 参考试题

试卷代号&#xff1a;1315 社会调查方法 试题 2019年1月 注意事项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完考卷和答题纸后才可离开考场…

android studio怎么回退,如何回滚已经commit的代码(Android Studio)

01项目开发中&#xff0c;时常会遇到这样一种情况&#xff0c;代码已经commit(非push)上去了&#xff0c;但此时发现有误&#xff0c;不想提交了&#xff0c;如何回滚?这点对于新手git的开发者还是比较陌生的。今天和大家分享这个知识点&#xff0c;如果你对git用法很熟练&…

低功耗蓝牙模块智能门锁应用案例

要说我们接触最多的智能产品应该就是手机吧&#xff0c;随着科技的不断发展&#xff0c;各种各样的智能产品现在都前赴后继的出现在我们眼前了&#xff0c;其中智能家居的迭代也如雨后春笋一般。层出不穷的产品除了让用户感受到科技感以外也便捷了生活和管理。今天我们来说一说…

飞畅科技教你如何选择合适的交换机?

交换机作为造存储区域的重要部件&#xff0c;可以看出其作用的重要性&#xff0c;目前光纤交换机的市场竞争力很强&#xff0c;需求量也在逐步的增加&#xff0c;其性能和特点也得到了很多人的认可。但由于光纤交换机是构造存储区域的核心部件&#xff0c;所以选择最合适的交换…

【渝粤教育】国家开放大学2018年秋季 1370T教师心理专题 参考试题

试卷代号&#xff1a;13 96 药事管理与法规&#xff08;本&#xff09; 试题 2019年1月 一、单选题&#xff08;35题&#xff0c;每题2分&#xff0c;共70分&#xff09; 1.从药品使用途径和安全管理角度&#xff0c;可将药品分为&#xff08; &#xff09;。 A.现代药和传统药…

内部时钟和外部时钟隔离的Σ-Δ调制器

“在本文中&#xff0c;将详细研究这两类隔离Σ-Δ调制器的输出数据信号完整性。并通过简单的电磁干扰&#xff08;EMI&#xff09;测试设置、对由这两类Σ-Δ调制器的高频时钟信号产生的EMI进行比较。 对输出数据信号完整性和时钟信号电磁干扰&#xff08;EMI&#xff09;的比…

【渝粤教育】国家开放大学2018年秋季 2111T病理学与病理生理学 参考试题

试卷代号&#xff1a;2119 医护心理学 试题&#xff08;开卷&#xff09; 2019年1月 一、单项选择题&#xff08;每题2分&#xff0c;共60分&#xff09; 1&#xff0e;下列反应中常见的急性应激反应是( )。 A&#xff0e;急性焦虑反应 B&#xff0e;急性呼吸道感染 C&#xf…

javafx中的tree_JavaFX中的塔防(5)

javafx中的tree这是有关使用FXGameEngine在JavaFX中创建塔防游戏的本教程的第5部分。 敌人现在飞向目标的攻击路径&#xff0c;炮塔瞄准并射击。 因此&#xff0c;最重要的部分在那里&#xff0c;但是仍然缺少许多细节。 游戏只是开始&#xff0c;没有给我们准备下一波的机会。…

android tag定义快捷键,Android Studio快捷键生成TAG、Log.x日志输出介绍

生成TAGlogtTab键&#xff1a;private static final String TAG "Extract";生成Log.d()logdTab键&#xff1a;Log.d(TAG, "onCreate: ");生成Log.e()logeTab键&#xff1a;Log.e(TAG, "onCreate: ",new Throwable());生成Log.i/w类似Log.i(TAG,…

让电流检测更精确的AMR技术

先进的系统需要准确、高效率且可靠的传感器&#xff0c;以取得适当的回馈信息来调节系统运作。不久前《Power Electronics News》(编按&#xff1a;EE Times出版集团ASPENCORE旗下刊物)与美商ACEINNA副总裁John Newton、技术长Mike Horton一起讨论了电流检测问题。 1 Newton表…

选购安防交换机时需要注意哪些误区?

一般来说&#xff0c;家庭、办公室、学校、小型监控等简易网络环境设计&#xff0c;都是使用的安防交换机&#xff0c;也是比较常用的&#xff0c;我们在购买安防交换机的时候&#xff0c;其实是有很多误区的&#xff0c;很多人都不知道&#xff0c;导致购买到了劣质的产品&…

【渝粤教育】国家开放大学2018年秋季 2247T社会工作政策法规 参考试题

试卷代号&#xff1a;2322 物流信息技术试题 2019年1月 一、单项选择题&#xff08;每小题1分&#xff0c;共10分&#xff0c;将正确答案选项的字母填入括号内&#xff09; 1&#xff0e;( )是存放在计算机存储设备中的以一种合理的方法组织起来的&#xff0c;与公司或组织的 业…

5G三兄弟NB-IoT排老几?NB-IoT介绍

5G 作为一个大家长&#xff0c;家里有三兄弟&#xff1a;LTE&#xff08;授权频道&#xff09;、LTE-U&#xff08;非授权频道&#xff09;、NB-IOT&#xff08;授权频道&#xff09;。就像是最近爆火的揭露现实中国家庭的电视剧《都挺好》中&#xff0c;苏家的三兄弟一样。作为…

Java中的CopyOnWriteArrayList

介绍&#xff1a; Java中的CopyOnWriteArrayList是List接口的线程安全实现。 它属于java.util.concurrent包&#xff0c;是ArrayList实现的增强版本。 顾名思义&#xff0c; CopyOnWriteArrayList为每个add&#xff08;&#xff09;或set&#xff08;&#xff09;操作创建基础…

[渝粤教育] 广东-国家-开放大学 10180k2_统计基础_21秋考试

1、次数分配数列是&#xff08;&#xff09;。&#xff08;2 分&#xff09; A&#xff0e;按数量标志分组形成的数列 B&#xff0e;按品质标志分组形成的数列 C&#xff0e;按统计指标分组所形成的数列 D&#xff0e;按数量标志和品质标志分组所形成的数列 2、下列指标中属于时…