中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

大庆市| 察哈| 银川市| 阿鲁科尔沁旗| 广平县| 昆山市| 河北区| 尉犁县| 甘肃省| 大厂| 吉安县| 成安县| 咸丰县| 满洲里市| 夏河县| 邳州市| 九龙坡区| 张家口市| 长垣县| 靖远县| 壶关县| 炎陵县| 修文县| 泽普县| 房产| 行唐县| 菏泽市| 通江县| 中江县| 区。| 安乡县| 威海市| 大庆市| 阿克陶县| 云南省| 孝昌县| 海伦市| 辽阳县| 乌什县| 宿迁市| 裕民县|