CurrentHashMap原理

ConcurrentHashMap内部数据结构是hashTable,但是与hashTable不同的是CurrentHashMap使用了锁分离技术,即:使用多个不同的锁来控制对HashTable的不同部分进行修改,其内部的不同部分使用Segment来表示。这样一个大的HashTable就会被分为多个小的HahTable,每个锁作用在不同的小HashTable上。当多个操作发生在不同的Segment上,就可以进行并发操作了。

但是有些操作例如:size(),需要将整个表锁定,先按顺序锁定每个段的,然后进行操作,操作完后再按顺序释放所有段的锁。

ConcurrentHashMap实际上就是将一个大HashTable分割成多个小的HashTable,然后在每个小的HashTable上加锁,实现锁分离。

ConcurrentHashMap的实现方式:

ConcurrentHashMap主要有三个实体类ConcurrentHashMap(整个Hash表),Segment(桶),HashEntry(节点)。

应用场景:当有一个大数组或集合需要多个线程共享

 

你可能感兴趣的:(CurrentHashMap原理)