亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

java中PriorityBlockingQueue的入隊知識點總結

瀏覽:20日期:2022-08-18 14:47:51

在PriorityBlockingQueue中添加元素同樣有四種方法,因為是樹狀的結構,所以在插入方法上也有所變化,是自下而上的操作過程。在入隊的規(guī)則上有三個要點需要我們注意。鑒于PriorityBlockingQueue入隊方法主要通過offer(E)實現(xiàn),所以我們就這種方法作主要講解。

1.入隊規(guī)則

(1)默認的插入規(guī)則中,新加入的元素可能會破壞小頂堆的性質(zhì),因此需要進行調(diào)整。

(2)調(diào)整的過程為:從尾部下標的位置開始,將加入的元素逐層與當前點的父節(jié)點的內(nèi)容進行比較并交換,直到滿足父節(jié)點內(nèi)容都小于子節(jié)點的內(nèi)容為止。

(3)默認的刪除調(diào)整中,首先獲取頂部下標和最尾部的元素內(nèi)容,從頂部的位置開始,將尾部元素的內(nèi)容逐層向下與當前點的左右子節(jié)點中較小的那個交換,直到判斷元素內(nèi)容小于或等于左右子節(jié)點中的任何一個為止。

2.入隊方法

入隊方法有:add(E), put(E), offer(E, timeout, TimeUnit), offer(E)

public void put(E e) { offer(e); // never need to block}public boolean offer(E e) { //判斷是否為空 if (e == null) throw new NullPointerException(); //顯示鎖 final ReentrantLock lock = this.lock; lock.lock(); //定義臨時對象 int n, cap; Object[] array; //判斷數(shù)組是否滿了 while ((n = size) >= (cap = (array = queue).length)) //數(shù)組擴容 tryGrow(array, cap); try { //拿到比較器 Comparator<? super E> cmp = comparator; //判斷是否有自定義比較器 if (cmp == null) //堆上浮 siftUpComparable(n, e, array); else //使用自定義比較器進行堆上浮 siftUpUsingComparator(n, e, array, cmp); //隊列長度 +1 size = n + 1; //喚醒休眠的出隊線程 notEmpty.signal(); } finally { //釋放鎖 lock.unlock(); } return true;}

可以看出前三個方法內(nèi)部都是通過 offer(e) 方法實現(xiàn)的。

標簽: Java
相關文章:
主站蜘蛛池模板: 日本一级特黄aa大片 | 毛片色 | 国产的一级毛片完整 | 麻豆传媒小视频 | 韩国免费高清一级毛片性色 | 欧美一级高清片在线 | 国产a三级三级三级 | 久久精品无遮挡一级毛片 | 亚洲第一区在线观看 | 久久丝袜美腿 | 亚洲综合日韩 | 精品不卡 | 亚洲欧美中日韩中文字幕 | 99在线精品国产不卡在线观看 | 亚洲日本aⅴ片在线观看香蕉 | 日本特级黄毛片毛片视频 | 欧美三级视频 | 久久婷婷色综合老司机 | 亚洲国产一成人久久精品 | 日韩av线上| 亚洲人成在线观看男人自拍 | 国产在线观看福利一区二区 | 在线观看91精品国产入口 | 亚洲综合图库 | 亚洲欧美久久精品1区2区 | 九九热精品在线视频 | 影院色| 一道精品一区二区三区 | 日韩精品第一页 | 手机看片在线精品观看 | 日本一级毛片 | 日本高清一级做a爱过程免费视频 | 98精品全国免费观看视频 | 亚洲精品日韩专区silk | 欧美一级高清黄图片 | 182tv午夜线路一线路二 | 国产大片喷水在线在线视频 | 亚欧在线一线 | 亚洲欧美片| 看日本真人一一级特黄毛片 | 插插插av |