并发容器ConcurrentSkipListMap,ConcurrentSkipListSet

老马说编程

ConcurrentSkipListSet也是基于ConcurrentSkipListMap实现的

特点

  • 所有操作都是无阻塞的,所有操作都可以并行,包括写

  • 实现了ConcurrentMap接口,直接支持一些原子复合操作(与ConcurrentHashMap类似)

  • 排序(与TreeMap一样),默认按键自然有序,可以传递比较器自定义排序,实现了SortedMap和NavigableMap接口。

public static void main(String[] args) {
    Map<String, String> map = new ConcurrentSkipListMap<>(
            Collections.reverseOrder());
    map.put("a", "abstract");
    map.put("c", "call");
    map.put("b", "basic");
    System.out.println(map.toString());
}

输出有序的
{c=call, b=basic, a=abstract}

并发跳表SkipList

是基于链表的,在链表的基础上加了多层索引结构。


查找性能与二叉树类似,复杂度是O(log(N))
类似二分查找了,从最高层开始

不需要并发的跳表SkipList

更为高效的结构,数据和所有层的索引在一个节点中
对于一个元素,只有一个节点,只是每个节点的索引个数可能不同


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 除了同步控制,线程池等基本工具以外,JDK还准备了一大批好用的容器类。 1.1 并发集合 JDK提供的这些容器大部...
    AaronSimon阅读 1,031评论 0 3
  • 什么是Map 不同于List单列的线性结构,Map提供的是一种双列映射的存储集合,它能够提供一对一的数据处理...
    still_loving阅读 3,307评论 0 30
  • Java继承关系初始化顺序 父类的静态变量-->父类的静态代码块-->子类的静态变量-->子类的静态代码快-->父...
    第六象限阅读 2,174评论 0 9
  • 4月20号,我们这里也要举办成语大会了,各学校都会挑选学生参加。经过层层选拔,闺女终于入选六人小组。这期间,田同学...
    苗苗的麻麻阅读 547评论 0 0
  • 在甲骨文时代,“酒”写为“酉”,从字形来看“酉”字的形状像一个酒坛,最上面的一横像是酒坛的盖子。因此,“酉”是酒的...
    徒手劈砖的文艺青年阅读 826评论 5 6