ConcurrentLinkedQueue和ConcurrentHashMap简单介绍

ConcurrentLinkedQueue是一个单向的链表

 

入队列

 

 

 

 

 每次在队尾追加两个节点,才移动一次tail节点

添加节点1和节点2

 

 在添加一个节点3

 

 step4中q为NULL,添加一个节点,即添加两个节点移动一次

出队列

 

 

 

 出队列是不观察tail指针位置,依赖于head指针后续的节点是否为NULL这一条件,即置NULL成功,出队列成功

 

ConcurrentHashMap的作用是降低Hash冲突,提升并发度
该map集合的结构是在链表和红黑树两种结构之间相互转换的,刚开始是链表的结构,当链表中的元素超过某个值,自动转化为红黑树,当红黑树中元素个数小于某个值,结构又转化为链表
使用红黑树的结构时,查询速度和更新速度比链表快
加锁的方案是对每个节点分别加锁

 

 

 

 

 

初始化

 

 

 

 

 

 

 

 

 

扩容

 

 只有当数组长度大于或者等于64,才会考虑转化为红黑树

 

 

 

 在扩容未完成之前,对应的数据是已经前移到了新的HashMap中,但是获取元素可能还是访问旧的HashMap

 

 

 

 

 

 

 

 在扩容还没有结束之前,想要访问旧的元素,对应的位置放置引用

 



posted @   不忘初心2021  阅读(184)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示