Java 并发之 ConcurrentSkipListMap 简述

JCIP 提到了在 Java 6 中引入了两个新的并发集合类 ConcurrentSkipListMapConcurrentSkipListSet。其实只要介绍一下 ConcurrentSkipListMap 便可(后面简称为 CSLM),由于咱们都知道 JDK 中 Set 是基于 Map 实现的。简而言之,CSLM 是一个并发的、可排序的 Map,所以它能够在多线程环境中弥补 ConcurrentHashMap 不支持排序的功能不足。从名字上就能够看出 CSLM 是基于 SkipList 跳表实现。学过算法的同窗应该对跳表不陌生。不过仍是要简单说一下跳表。html

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

SkipList

CSLM 实现了 SortedMapNavigableMapConcurrentNavigableMap 等接口,因此它能提供丰富的操做。网上有些介绍 CSLM 的文章,相同的内容我就再也不重复,列出这些文章的连接以供参考:shell

跳表的实现细节

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

无锁线程安全容器的实现

PS. 跳表的时间复杂度怎么算的,算法导论没看完啊并发

相关文章
相关标签/搜索