日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中的PriorityBlockingQueue

發布時間:2023/12/3 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中的PriorityBlockingQueue 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹:

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 ,我們可以使用以下任何一種方法:

  • 布爾值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)絕不會返回false , put(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

總結

以上是生活随笔為你收集整理的Java中的PriorityBlockingQueue的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。