为了线程安全,ConcurrentHashMap 引入了一个 “分段锁” 的概念。具体可以理解把一个大的 map 拆分成 N 个小的 Map 。最后再根据 key.hashcode( )来决定放到哪一个 hashmap 中去。

hashmap 本质是数组+链表,根据 key.hashcode( ) 计算出数组对应下标。如果多个 key 对应同一个下标,用一个链表串起来,新数据在前面。

ConcurrentHashMap :在 hashmap 基础上,ConcurrentHashMap 将数据分解成多个 segment (默认 16 个),每次操作对 segment 加锁,避免多线程锁的几率,提高并发效率。

08-24 03:27