ConcurrentHashMap和HashTable类似,但加锁方式不同
HashTable是锁住整个map
ConcurrentHashMap的基本思想是采取分块的方式加锁,分块数由参数“concurrencyLevel”来决定(和HashMap中的“initialCapacity”类似,实际块数是第一个大于concurrencyLevel的2的n次方)。每个分块被称为Segment,Segment的索引方式和HashMap中的Entry索引方式一致(hash值对数组长度取模)。
对Segment加锁的方式很简单,直接把Segment定义为ReentrantLock的子类。
static final class Segment<K,V> extends ReentranceLock implements Seriable{}
Segmentk可以看出一个特定实现的HashTable。
时间: 2024-10-21 04:05:03