ConcurrentHashMap
-
- ConcurrentHashMap
- jdk1.7
- 实现原理
- 数据结构
- segment数组+hashEntry数组+链表
- 而每一个 Segment 是一个类似于 HashMap 的结构,所以每一个 HashMap 的内部可以进行扩容
- 但是 Segment 的个数一旦初始化就不能改变,默认 Segment 的个数是 16 个,你也可以认为 ConcurrentHashMap 默认支持最多 16 个线程并发。
- segment数组+hashEntry数组+链表
- 线程安全 分段锁
- 分段锁 以segment为基本单位加ReentrantLock锁
- segment数组下标初始化使用 自旋+CAS 保证线程安全
- segment的put方法使用 自旋锁+ReentrantLock 保证线程安全
- 数据结构
- 实现原理
- jdk1.8
- 实现原理
- 数据结构
- Node数组+链表/红黑树
- 数据结构和hashmap类似
- Node数组+链表/红黑树
- 线程安全
- 分段锁 以Node对象 为基本单元加锁
- Node数组和Node对象初始化 使用 volatile + CAS 保证线程安全
- Node的增删改查方法 使用 synchronized 保证线程安全
- 数据结构
- 实现原理
- https://javaguide.cn/java/collection/concurrent-hash-map-source-code.html#_1-concurrenthashmap-1-7
- jdk1.7
- ConcurrentHashMap
作者: 一点点征服
出处:http://www.cnblogs.com/ldq2016/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利