码迷,mamicode.com
首页 > 编程语言 > 详细

java set的线程安全

时间:2020-02-19 13:14:34      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:调用   tps   sts   family   contain   程序员   rem   skiplist   安全   

CopyOnWriteArraySetConcurrentSkipListSet

 

与线程不安全的集合类的对应关系

  • HashSet -> CopyOnWriteArraySet
  • TreeSet -> ConcurrentSkipListSet

CopyOnWriteArraySet概述

  • 底层实现依赖于CopyOnWriteArrayList,因此也适合于数据量很小的,读操作大于写操作的集合;
  • 迭代器不支持可变的remove操作,使用迭代器遍历时速度很快;

ConcurrentSkipListSet概述

  • 和TreeSet一样,支持自然排序,可以在构造的时候定义比较器;
  • 其中的contains, add, remove操作都是线程安全的,但对于批量操作,比如addAll removeAll, containsAll并不能保证原子性执行,因为其底层还是调用contains, add, remove方法,在批量操作时,只能保证每一个的add等操作是原子性的,对于批量操作在调用时,还是要手动加上锁保证原子性;
  • 不允许存储空元素;


作者:乌鲁木齐001号程序员
链接:https://www.jianshu.com/p/2bc70f6e838e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

java set的线程安全

标签:调用   tps   sts   family   contain   程序员   rem   skiplist   安全   

原文地址:https://www.cnblogs.com/anenyang/p/12330505.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!