使用分段锁 Segment。由 Hashtable 的锁住整个表,HashMap 的不锁,到锁住表的一部分。线程同步使用的是 Lock 锁。
-
结构图
Segment 是一种可重入锁 ReentrantLock,在 ConcurrentHashMap 里扮演锁的角色,HashEntry 则用于存储键值对数据。
一个 ConcurrentHashMap 里包含一个 Segment 数组,Segment 的结构和 HashMap 类似,是一种数组和链表结构。一个 Segment 里包含一个 HashEntry 数组,每个 HashEntry 是一个链表结构的元素。每个Segment 守护着一个 HashEntry 数组里的元素,当对 HashEntry 数组的数据进行修改时,必须首先获得它对应的 Segment 锁。
JDK7 ConcurrentHashMap 关键技能点
相关文章:
- JS Date getTime 后变为 8点,js时间如何不从8点开始计算
- iOS多线程运用
- 基于Java,PPT转Html5(保留动画,可私有化部署,可对接接口)
- iOS--CoreML初识
- iOS14 -[PHPhotoLibrary presentLimitedLibraryPickerFromViewController-] crash的问题
- vue中$refs, $emit, $on, $once, $off的使用详解
- java学习之变量
- iOS中frame和bounds区别
- [Vue warn]- The client-side rendered virtual DOM tree is not matching server-rendered content. Th...
- C++技能点之智能指针(二)