ConcurrentLinkedQueue和ConcurrentHashMap简单介绍
ConcurrentLinkedQueue是一个单向的链表
入队列
每次在队尾追加两个节点,才移动一次tail节点
添加节点1和节点2
在添加一个节点3
step4中q为NULL,添加一个节点,即添加两个节点移动一次
出队列
出队列是不观察tail指针位置,依赖于head指针后续的节点是否为NULL这一条件,即置NULL成功,出队列成功
ConcurrentHashMap的作用是降低Hash冲突,提升并发度
该map集合的结构是在链表和红黑树两种结构之间相互转换的,刚开始是链表的结构,当链表中的元素超过某个值,自动转化为红黑树,当红黑树中元素个数小于某个值,结构又转化为链表
使用红黑树的结构时,查询速度和更新速度比链表快
加锁的方案是对每个节点分别加锁

初始化
扩容

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

在扩容未完成之前,对应的数据是已经前移到了新的HashMap中,但是获取元素可能还是访问旧的HashMap
在扩容还没有结束之前,想要访问旧的元素,对应的位置放置引用
标签:
多线程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异