亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

唐海县| 石棉县| 体育| 镇赉县| 陇南市| 剑河县| 武宣县| 松潘县| 民权县| 苏尼特左旗| 顺平县| 中西区| 鱼台县| 安图县| 通山县| 张北县| 兴化市| 建始县| 和平区| 乌拉特中旗| 彝良县| 白沙| 乌海市| 休宁县| 邵阳县| 洛扎县| 子洲县| 绥德县| 桂平市| 绥江县| 社旗县| 太康县| 宣城市| 洪洞县| 安塞县| 竹溪县| 温州市| 昌宁县| 东港市| 西林县| 阿尔山市|