并发容器
涟漪海洋
不想做一个碌碌无为的人,努力努力再努力@努力努力再努力
展开
-
CopyOnWriteArrayList随笔
CopyOnWriteArrayList内部操作特点多占用内存:写数据时是copy了一份完整的数据,单独进行操作 数据一致性:操作完数据,其他线程不一定能马上读取到最新数据(只能保证最终数据一致性,不能保证数据实时一致)主要的成员 /**写时候需要的锁*/ final transient ReentrantLock lock = new ReentrantLock(); /**数据存储的位置*/ private transi...原创 2020-06-24 20:13:46 · 145985 阅读 · 0 评论 -
HashSet 的内部实现
HashSet的内部采用了HashMap作为数据存储因为HashMap是无序的,因此HashSet也不能保证元素的顺序 因为HashSet中没有对应同步的操作,因此是线程不安全的 支持null元素(因为hashMap也支持null键和null值)构造方法: private transient HashMap<E,Object> map; public HashSet() { map = new HashMap<>()...原创 2020-06-22 15:59:35 · 148053 阅读 · 0 评论 -
Java8 ConcurrentHashMap实现原理
Java8ConcurrentHashMap实现原理,基本和Java8的HashMap相同,不同于他的是前者保证了线程的安全性,和Java7的ConcurrentHashMap区别在于,两者保证线程安全性的机理不同,Java7中采用了“分段”锁的概念,每一个分段都有一把锁,锁内存储的着数据,锁的个数在初始化之后不能扩容,Java7 ConcurrentHashMap原理 传送门但是Java8摒弃了这种设计理念,和Java8一样采用数组+链表+红黑树的概念来实现,那么要保证是线程安全(synchron..原创 2020-06-18 18:58:31 · 154389 阅读 · 0 评论 -
Java8 一篇文章彻底弄清楚HashMap底层实现
HashMap的特点不允许重复的key,支持Null值和Null键(Null键会被放在第一位) 元素是无序的-不能保证存储顺序 是线程不安全的(存在高并发问题) 性能较高Java8HashMap采用的是数组+链表+红黑树的数据结构,结构如下继承和实现情况 HashMap实现了Map<K,V>, Cloneable, Serializable接口,并继承AbstractMap<K,V>类public class HashMap&l...原创 2020-06-18 16:17:18 · 151227 阅读 · 0 评论