您的位置:首页 > 编程语言 > Java开发

Java 并发之 ConcurrentSkipListMap 简述

2016-03-10 16:05 746 查看
JCIP 提到了在 Java 6 中引入了两个新的并发集合类
ConcurrentSkipListMap
ConcurrentSkipListSet
。其实只要介绍一下
ConcurrentSkipListMap
即可(后面简称为 CSLM),因为我们都知道 JDK 中 Set 是基于 Map 实现的。简而言之,CSLM 是一个并发的、可排序的 Map,因此它可以在多线程环境中弥补
ConcurrentHashMap
不支持排序的功能不足。从名字上就可以看出 CSLM 是基于 SkipList 跳表实现。学过算法的同学应该对跳表不陌生。不过还是要简单说一下跳表。

跳表是一种采用了用空间换时间思想的数据结构。它会随机地将一些节点提升到更高的层次,以创建一种逐层的数据结构,以提高操作的速度。





CSLM 实现了
SortedMap
NavigableMap
ConcurrentNavigableMap
等接口,所以它能提供丰富的操作。网上有些介绍 CSLM 的文章,相同的内容我就不再重复,列出这些文章的链接以供参考:

跳表的实现细节

Java多线程(四)之ConcurrentSkipListMap深入分析

这篇文章主要是在讲跳表在 CSLM 中是如何实现的,其使用的源代码应是 JDK 6 中的,CSLM 的实现在 JDK 7 和 JDK 8 中都有变化。而对于 CSLM 是如何实现线程安全的,这篇文章没有涉及。

无锁线程安全容器的实现

一种基于CAS的无锁并发HashTable设计及C代码实现

这篇文章的图有一点小错误

无锁HashMap的原理与实现

PS. 跳表的时间复杂度怎么算的,算法导论没看完啊
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: