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


