ConcurrentHashMap学习笔记
来源:互联网 发布:淘宝页面导航怎么设置 编辑:程序博客网 时间:2024/06/07 10:12
ConcurrentHashMap为线程同步的Map实现,并采用了分段锁的设计,分段锁称为Segment,它即类似于HashMap的结构,即内部拥有一个Entry数组,数组中的每个元素又是一个链表;同时又是一个ReentrantLock(Segment继承了ReentranLock)。其结构图如下:
其类图信息如下
ConcurrentHashMap的操作:
1.get操作
ConcurrentHashMap完全允许多个读操作并发执行,读操作不需要加锁,除非读到的值是空值才会加锁重读。
实现技术:保证HashEntry几乎是不可变的(HashEntry代表每个Hash链中的一个节点)其结构如下
static final class HashEntry<K,V>{
final K key;
final int hash;
volatile V value;
final HashEntry<K,V> next;//在jdk6中为final,在jdk7以上为volatile
}
2.put操作:由于put方法需要对共享变量进行写入操作,所以为线程安全,在操作共享变量时必须加锁。put方法首先定位到Segment,然后在Segment里进行插入操作。插入操作需要经历两个步骤,第一步判断是否需要对Segment里的HashEntry数组进行扩容,第二补定位添加元素的位置,然后将其放在HashEntry数组里。
阅读全文
0 0
- ConcurrentHashMap学习笔记(Java8)
- ConcurrentHashMap学习笔记一
- ConcurrentHashMap学习笔记
- 学习笔记二之ConcurrentHashMap
- HashTable和ConcurrentHashMap学习笔记
- Java学习笔记(二)ConcurrentHashMap
- ConcurrentHashMap笔记
- ConcurrentHashMap笔记
- ConcurrentHashMap学习
- ConcurrentHashMap学习
- 疯狂Java学习笔记(80)-----------并发容器之ConcurrentHashMap
- Java学习笔记(80)-----------并发容器之ConcurrentHashMap
- [JAVA学习笔记-86]ConcurrentHashMap与synchronizedMap的对比
- ConcurrentHashMap源代码阅读笔记
- Hashtable与ConcurrentHashMap笔记
- Java中ConcurrentHashMap学习
- Java中ConcurrentHashMap学习
- concurrentHashMap原理学习
- Android——动态设置view背景颜色setBackgroundColor
- Android Studio中添加第三方框架
- http和HTTPS的区别及SSL介绍
- MongoDB 副本模式
- 验证码识别---云打码
- ConcurrentHashMap学习笔记
- java开发手册
- C语言内存管理
- [Linux C编程]进程控制
- Windows下MongoDB企业版压缩包缺少DLL解决方法
- Mblog系统配置
- 手游服务器开发技术详解
- C语言语句概况
- 提高微信公众号文章采集效率,anyproxy进阶使用方法(转)