ConcurrentSkipListMap以及跳查表简单介绍
ConcurrentSkipListMap是一个有序的hashMap集合,看例子
底层原理是跳查表
当节点删除和节点添加同时操作就会报错,这是因为链表中删除数据是通过头节点的移动来操作的,头节点位置移动下,该节点就被删除了,故而新增节点时,节点已经删除,但是新的节点并不知道已经删除了,就报错了
解决方案如下
先进行软删除,在进行物理删除
有关实际方案化,即Mark节点方案、
标记a节点已经删除,即标记它的next节点,新造一个Mark节点,使得节点a的next指针执行Mark节点,需要新增节点b时,查询节点a后是不是有个Mark节点,将两个操作在一个CAS操作完成
跳查表
它的作用是解决无锁链表的插入和删除
1 2 | 无论是插入、删除,还是查找,都有相似的逻辑,都需要先定位到元素位置[b,n],然后判断b、n 是否已经被删除,如果是,则需要执行相应的删除清理逻辑。 |
【推荐】国内首个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的设计差异