ConcurrentHashMap如何保证的线程安全?
下文笔者讲述ConcurrentHashMap保证线程安全的方法分享,如下所示
ConcurrentHashMap线程安全的原理
JDK1.7中: 使用分段锁 将一个Map分16个段 每个段都是一个小的hashmap 每次操作只对其中一个段加锁 JDK1.8中: 采用CAS+Synchronized保证线程安全 每次插入数据时判断在当前数组下标是否是第一次插入 是就通过CAS方式插入 然后判断f.hash是否=-1 true就说明其他线程正在进行扩容 当前线程也会参与扩容;删除方法用了synchronized修饰 保证并发下移除元素安全
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。