ConcurrentLinkedQueue是一个单向的链表
入队列
每次在队尾追加两个节点,才移动一次tail节点
添加节点1和节点2
在添加一个节点3
step4中q为NULL,添加一个节点,即添加两个节点移动一次
出队列
出队列是不观察tail指针位置,依赖于head指针后续的节点是否为NULL这一条件,即置NULL成功,出队列成功
ConcurrentHashMap的作用是降低Hash冲突,提升并发度
该map集合的结构是在链表和红黑树两种结构之间相互转换的,刚开始是链表的结构,当链表中的元素超过某个值,自动转化为红黑树,当红黑树中元素个数小于某个值,结构又转化为链表
使用红黑树的结构时,查询速度和更新速度比链表快
加锁的方案是对每个节点分别加锁
初始化
扩容
只有当数组长度大于或者等于64,才会考虑转化为红黑树
在扩容未完成之前,对应的数据是已经前移到了新的HashMap中,但是获取元素可能还是访问旧的HashMap
在扩容还没有结束之前,想要访问旧的元素,对应的位置放置引用
标签:黑树,ConcurrentHashMap,ConcurrentLinkedQueue,队列,链表,简单,NULL,节点 From: https://www.cnblogs.com/q202105271618/p/16984103.html