特点:有序链表实现,无锁实现,value不能为空,层级越高跳跃性越大,数据越少,理论上查询变快。 新的node是否抽出来作为index,随机决定; index的level由随机数决定(随机数比特位连续为1的数量) 每层的元素,headIndex固定为所有node中最小的 查找数据时,按照从上到下,从 ...
分类:
其他好文 时间:
2019-01-13 21:08:03
阅读次数:
147
Java并发集合-ConcurrentSkipListMap分析和使用 一、ConcurrentSkipListMap介绍 ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景。ConcurrentSkipListMap和TreeMap,它们虽然都是有序的哈希表。但 ...
分类:
编程语言 时间:
2018-10-13 16:50:49
阅读次数:
163
简介 基于跳表,支持并发,有序的哈希表。 跳表 红色路径为寻找结点F。 拿空间换时间,时间复杂度,O(nlogn). 源码分析 内部类 Node 属性 构造方法 核心方法 Index 属性 构造方法 核心方法 HeadIndex 属性 构造方法 核心方法 initialize() doPut(K, ...
分类:
其他好文 时间:
2018-05-08 23:54:07
阅读次数:
206
看一下跳跃表的示意图,途中蓝色的为头节点,头节点指向的是普通索引节点 通过上图可以看到跳跃表的基本结构,下面分析一下普通索引节点和头节点的源码,可以发现头节点和普通索引节点的区别就是头节点有level的概念,而普通索引节点没有 ...
分类:
其他好文 时间:
2018-04-12 22:25:24
阅读次数:
185
本文将介绍除了阻塞队列外的并发容器: ConcurrentHashMap、CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentSkipListMap、ConcurrentSkipListSet、ConcurrentLinked ...
分类:
其他好文 时间:
2018-03-03 00:40:37
阅读次数:
210
private V doPut(K key, V value, boolean onlyIfAbsent) { Node z; // added node if (key == null) throw new NullPointerException(); Comparator cmp ... ...
分类:
其他好文 时间:
2017-12-06 18:05:22
阅读次数:
185
【简述】 ConcurrentHashMap内部使用段(Segment)来表示这些不用的部分,每个段其实就是一个小的HashTable,他们有自己的锁,只要多个修改操作发生在不同的段上,他们就可以并发执行。把一个整体的分成了16个段(Segment),也就是最高支持16个线程并发的修改操作。这也是在 ...
分类:
其他好文 时间:
2017-10-14 16:53:33
阅读次数:
192
转载请注明源出处:http://www.cnblogs.com/lighten/p/7542578.html 1.前言 一个可伸缩的并发实现,这个map实现了排序功能,默认使用的是对象自身的compareTo方法,如果提供了比较器,使用比较器的比较方法。简单来说ConcurrentSkipListM ...
分类:
编程语言 时间:
2017-09-18 19:43:49
阅读次数:
235
ConcurrentMap接口下有两个重要的实现: ConcurrentHashMap ConcurrentSkipListMap(支持并发排序功能,弥补ConcurrentHashMap) ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的H ...
分类:
其他好文 时间:
2017-02-16 13:58:14
阅读次数:
201
AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterS ...
分类:
编程语言 时间:
2016-11-29 13:54:13
阅读次数:
233