使用分段锁 Segment。由 Hashtable 的锁住整个表,HashMap 的不锁,到锁住表的一部分。线程同步使用的是 Lock 锁。
-
结构图
Segment 是一种可重入锁 ReentrantLock,在 ConcurrentHashMap 里扮演锁的角色,HashEntry 则用于存储键值对数据。
一个 ConcurrentHashMap 里包含一个 Segment 数组,Segment 的结构和 HashMap 类似,是一种数组和链表结构。一个 Segment 里包含一个 HashEntry 数组,每个 HashEntry 是一个链表结构的元素。每个Segment 守护着一个 HashEntry 数组里的元素,当对 HashEntry 数组的数据进行修改时,必须首先获得它对应的 Segment 锁。
JDK7 ConcurrentHashMap 关键技能点
相关文章:
- Android Jetpack-Room入门
- 如何js读取utf-16le编码文件的数据信息
- iOS--CoreML初识
- 史上最详细的Android原生APP中添加ReactNative 进行混合开发教程
- iOS14 -[PHPhotoLibrary presentLimitedLibraryPickerFromViewController-] crash的问题
- 基于Java,PPT转Html5(保留动画,可私有化部署,可对接接口)
- Java后端+PhantomJS +Echars生成数据图表
- linux服务器 修改默认php版本
- JS Date getTime 后变为 8点,js时间如何不从8点开始计算
- iOS常用代码块&注释规范