韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > java基础 > java中ConcurrentLinkedQueue的入队

java中ConcurrentLinkedQueue的入队

头像

小妮浅浅

2021-02-09 13:56:252855浏览 · 0收藏 · 0评论

本文教程操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。

1.入队说明

入队列就是将入队节点添加到队列的尾部。为了方便理解入队时队列的变化,以及head节点和tair节点的变化,每添加一个节点我就做了一个队列的快照图。

2.入队过程

从源代码角度来看整个入队过程主要做二件事情。

(1)定位出尾节点,

(2)使用CAS算法能将入队节点设置成尾节点的next节点,如不成功则重试。

3.入队实例

add()和offer()都是加入元素的方法(在ConcurrentLinkedQueue中,这两个方法没有任何区别)。

/**
 * 入队一个元素.
 *
 * @throws NullPointerException 元素不能为null
 */
public boolean add(E e) {
    return offer(e);
}
 
/**
 * 在队尾入队元素e, 直到成功
 */
public boolean offer(E e) {
    checkNotNull(e);
    final Node<E> newNode = new Node<E>(e);
    for (Node<E> t = tail, p = t; ; ) {             // 自旋, 直到插入结点成功
        Node<E> q = p.next;
        if (q == null) {                            // CASE1: 正常情况下, 新结点直接插入到队尾
            if (p.casNext(null, newNode)) {
                // CAS竞争插入成功
                if (p != t)                         // CAS竞争失败的线程会在下一次自旋中进入该逻辑
                    casTail(t, newNode);            // 重新设置队尾指针tail
                return true;
            }
            // CAS竞争插入失败,则进入下一次自旋
 
        } else if (p == q)                          // CASE2: 发生了出队操作
            p = (t != (t = tail)) ? t : head;
        else
            // 将p重新指向队尾结点
            p = (p != t && t != (t = tail)) ? t : q;
    }
}

以上就是java中ConcurrentLinkedQueue的入队方法,同样是熟悉的offer方法为例带来介绍,同样add也是插入元素的一种方法,这里我们就不再介绍,感兴趣的可以课后了解。

关注

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

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

《暴雨回不了家去上司家》| 白带内裤拉丝尿液| 三叶草M码与欧洲码的区别| 精品人妻人人爽久久爽AV敬礼| 泳装少女| 香蕉视频APP| 一边吃奶一边做边爱会得白血病吗 | 被多人道具调教玩弄NP| 女士穿紧身裸体开裆光滑皮裤| 中中漫画免费漫画弹窗入口| 欧美人与人动人物2024心理学| 俄罗斯大扔子视频观看| 荫蒂被三个男人添| 玉女心经| 羞羞视频| 小寡妇在线观看免费播放电视剧| 《打烊后仅剩的沙龙樱花片尾曲》 | 《急救护士1982满天星》| 小婕子太紧了太深了| 俄罗斯空姐2(俄罗斯航空)| 欧洲最强女RAPPER免费| GAI视频免费播放器| 男同桌硬了把我内裤也脱了| 欧美多人| 他解开内裤把舌头进去的视频| 爰痴癫| 麻花传剧原创MV免费播放小米车 | 洪真英| 公交车上被蹭水后多久自然恢复| 妈妈你真棒里面的插曲叫什么| 日本一姐RAPPER太多| 情趣内衣| 《不戴套瑜伽教练3》| 黑丝| 99久久无码-区人妻A片潘金莲| 孕妇| 妈妈叫我戴上避孕套英文| 人马杂配MV的视频在哪里看| 九九在线观看免费播放大全电视剧| 空姐少女正版2| 女朋友想放进去睡是什么心理