国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > java基础 > java中ArrayBlockingQueue的出队

java中ArrayBlockingQueue的出队

头像

小妮浅浅

2021-01-11 14:02:062464浏览 · 0收藏 · 0评论

对于队里的操作,有往其中添加元素,那么就会有取出元素的情况,我们把元素移除的行为称作出队。跟入队一样,出队同样用ArrayBlockingQueue中的方法进行实现:remove()、poll()、take()、poll。下面我们先来简单理解下出队的流程,再就其中两种出队的函数方法带来深入的探索。

1.出队流程

1)初始化情况是队列满的情况。

2)来了一个线程,将队列中第一个元素取走。此时,队列中 putIndex 索引没有变化,而 takeIndex 索引指向了下一个位置。

3)假设又来一条线程执行取出值操作,takeIdex 索引将会指向下一个位置。

4)继续进行出队操作,直到 takeIndex 索引指向最后一个位置

5)再次进行取出时,可以看到似乎有一次回到了原点。这就环形队列队列。

2.出队方法

出队有四个方法,它们分别是remove()、poll()、take()、poll

poll 方法

//获取元素,如果队列没有元素直接返回null
public E poll() {
        //上锁
        final ReentrantLock lock = this.lock;
        lock.lock();
        try {
            //如果队列有元素,调用dequeue获取元素,否则返回null
            return (count == 0) ? null : dequeue();
        } finally {
            //释放锁资源
            lock.unlock();
        }
    }
//获取元素,如果队列没有元素,有超时时间的等待队列有元素入队
public E poll(long timeout, TimeUnit unit) throws InterruptedException {
        //计算超时时间
        long nanos = unit.toNanos(timeout);
        //上锁
        final ReentrantLock lock = this.lock;
        lock.lockInterruptibly();
        try {
            while (count == 0) {
                if (nanos <= 0)
                    //超时返回null
                    return null;
                //带超时时间的条件等待
                nanos = notEmpty.awaitNanos(nanos);
            }
            //未超时并且队列有元素,调用dequeue方法获取元素
            return dequeue();
        } finally {
            //释放锁资源
            lock.unlock();
        }
}

take 方法

//获取元素,如果队列没有元素,一直等待队列有元素入队
public E take() throws InterruptedException {
        //上锁
        final ReentrantLock lock = this.lock;
        lock.lockInterruptibly();
        try {
            while (count == 0)
                //while循环,如果队列没有元素,一直带条件等待
                notEmpty.await();
            //调用dequeue方法获取元素
            return dequeue();
        } finally {
            //释放锁资源
            lock.unlock();
        }
    }

以上就是java中ArrayBlockingQueue的出队方法,在学会了出队的流程后就可以进行实例操作。这里我们也需要对不同的函数方法有所了解,然后结合ArrayBlockingQueue的用法一起实现出队。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

成色P31S是国精产品吗| 《黏糊糊的你》动漫免费观看| 免费观看己满十八岁电视剧姐弟| 年轻的嫂子2| 狗配人的大片视频大全| 欧美三级A做爰在线观看| 妻子在厨房被三个男人欺负的后果| 《性房纵欲》在线观看| 玩具体验馆BY 笔趣阁| 阴部按摩出水太尴尬怎么办| 把腿开大点我添添你SB| 《枕边欢情》电影免费观看| 男生的困困塞女生的困困里| B站夫妻进入高峰期需要多久| 国产电影一曲二曲三曲爱妃记豆瓣 | 伦理《少妇的滋味》完整版| 我妈妈同意你再做一次心理咨询| 挪威的森林截了一段3分钟| 日本无码A片人妻久尤物明理紬| 丁字裤阴唇肥大的地方叫什么| 玉茎入玉门的正确方法图片| 苹果13参数| 日日精进久久为功的下一句是| 找找色| 成全二人世界免费观看电视剧| 女性俱乐部LOGO| 成品人和精品人的区别在哪里知乎 | 偷偷在线观看免费高清电视剧推荐| 强伦轩特级A片免费播放女的老师| 泳装大雷抖动舞蹈视频| 短视频| 狗配人的大片视频大全| 菠萝蜜在线观看免费播放电视剧| 第1章饱满的乳峰喷奶水小说| 泳装少女| 妈妈用嘴巴帮我消火怎么办| 五姑娘影院在线观看免费版电视剧| 性之图| 日韩无矿砖区转吗| 共享女儿小诗1~10章的背景资.| 咬女生小头头视频