ConcurrentSkipListMap以及跳查表简单介绍

ConcurrentSkipListMap是一个有序的hashMap集合,看例子

 

 底层原理是跳查表

 当节点删除和节点添加同时操作就会报错,这是因为链表中删除数据是通过头节点的移动来操作的,头节点位置移动下,该节点就被删除了,故而新增节点时,节点已经删除,但是新的节点并不知道已经删除了,就报错了

解决方案如下

先进行软删除,在进行物理删除

有关实际方案化,即Mark节点方案、

标记a节点已经删除,即标记它的next节点,新造一个Mark节点,使得节点a的next指针执行Mark节点,需要新增节点b时,查询节点a后是不是有个Mark节点,将两个操作在一个CAS操作完成

跳查表

它的作用是解决无锁链表的插入和删除

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1
2
无论是插入、删除,还是查找,都有相似的逻辑,都需要先定位到元素位置[b,n],然后判断b、n
是否已经被删除,如果是,则需要执行相应的删除清理逻辑。

 

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