91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ArrayBlockingQueue怎么在java中使用

發布時間:2021-04-21 17:17:59 來源:億速云 閱讀:130 作者:Leah 欄目:編程語言

ArrayBlockingQueue怎么在java中使用?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Java是什么

Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。

1.入隊流程

構造一個長度為 6 的環形數組:

(1)剛剛開始構造完畢時,插入索引和取出索引都在同一個位置,數組內值為空

(2)將元素 A 進行入隊操作。元素 A 入隊后,取出值的索引不會變化,但是入隊索引會偏移到下一個位置

(3)繼續進行入隊操作,直到 putIndex 索引指向最后一個位置

(4)將元素 F 進行入隊,我們會看到,putIndex 索引和 takeIndex 索引,又到回了初始時的位置,這就是上面說的環形隊列,此時如果再有線程進行入隊操作時,線程便會堵塞,直到元素被消費。

2.入隊方法

入隊有四個方法,它們分別是add、offer、put、offer,就其中兩種帶來介紹。

(1)add 方法

//添加元素到隊尾
public boolean add(E e) {
        //調用父類的方法
        return super.add(e);
    }
//父類的添加方法
 public boolean add(E e) {
        //實質是調用offer方法
        if (offer(e))
            return true;
        else
            throw new IllegalStateException("Queue full");
    }

(2)put 方法

//添加制定元素到隊尾,如果隊列滿了一直等待隊列有元素出隊
public void put(E e) throws InterruptedException {
        checkNotNull(e);
        //上鎖
        final ReentrantLock lock = this.lock;
        lock.lockInterruptibly();
        try {
            while (count == items.length)
                //while循環,如果隊列滿了一直等待
                notFull.await();
            //隊列還有空間,調用enqueue方法入隊
            enqueue(e);
        } finally {
            //釋放鎖資源
            lock.unlock();
        }
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

敦化市| 江油市| 南康市| 贵溪市| 赞皇县| 金山区| 斗六市| 阿拉善盟| 江口县| 苍南县| 嵊州市| 西城区| 鹤庆县| 宁蒗| 湖南省| 安泽县| 新野县| 开化县| 铁岭市| 武义县| 庆云县| 湟源县| 安宁市| 龙游县| 什邡市| 津南区| 奉新县| 汕尾市| 自治县| 方山县| 长宁区| 宜宾市| 金塔县| 馆陶县| 六安市| 札达县| 阳曲县| 尚义县| 乡宁县| 博乐市| 庄浪县|