自适应网站建设模板,怎么卸载2345网址导航,注册网站做推广,建设银行报考网站介绍#xff1a; Java中的PriorityBlockingQueue实现了BlockingQueue接口并支持PriorityQueue的功能。 那么#xff0c;什么是BlockingQueue#xff1f; 以下适用于BlockingQueue的任何实现#xff1a; 尝试检索元素时#xff0c;如果队列为空#xff0c;线程将等待 在… 介绍 Java中的PriorityBlockingQueue实现了BlockingQueue接口并支持PriorityQueue的功能。 那么什么是BlockingQueue 以下适用于BlockingQueue的任何实现 尝试检索元素时如果队列为空线程将等待 在有限制的BlockingQueue实现的情况下线程将等待直到它有空间插入新元素 PriorityBlockingQueue是java.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 我们可以使用以下任何一种方法 布尔值addE e 布尔报价E e 无效推E e PriorityBlockingQueueInteger pbq new PriorityBlockingQueue();pbq.add(4); //Or
pbq.offer(1); //Or
pbq.put(8); 由于PriorityBlockingQueue是不受限制的因此它们的行为均相同。 换句话说 offere绝不会返回false pute绝不会阻止该操作。 2.删除 我们可以通过以下方式之一删除PriorityBlockingQueue中的元素 boolean removeObject 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 containsObject obj检查给定的ob j是否存在于队列中 int size返回队列的大小 void clear删除队列中的所有元素 Object [] toArray返回一个数组该数组包含上下文中队列的所有元素 比较器比较器返回比较器用于排序队列中的元素 intrainToToCollection c删除队列中所有可用的元素并将它们添加到给定的Collection中 。 它还返回传输的元素数 intrainToCollection cint maxElements从队列中移除最多maxElements个元素并将其添加到给定的Collection c中 结论 在本快速教程中我们探讨了PriorityBlockingQueue是什么以及如何使用它。 它是线程安全的实现并阻止轮询直到某个元素可用为止。 成为第一个发表评论的人。 翻译自: https://www.javacodegeeks.com/2019/05/priorityblockingqueue-java.html