ConcurrentHashMap的get()方法
时间: 2023-11-08 14:01:07 浏览: 80
java.util.concurrent系列文章(2)
ConHashMap的get()方法是用来获取指定key对应的value值的方法。在正常情况下,get()方法不需要加锁,这也是它相对于其他并发集合(如Hashtable或用Collections.synchronizedMap()包装的HashMap)的一个高效之处之一。
具体来说,get()方法的实现过程如下:
1. 首先,根据传入的key计算出一个hash值。
2. 然后,通过hash值对应的Segment(分段锁)来定位到具体的Segment,Segment是ConcurrentHashMap的一个内部类,每个Segment对应一个哈希桶。
3. 如果定位到的Segment不为空,并且对应的哈希桶也不为空,则在哈希桶中遍历查找指定的key。
4. 如果找到了对应的key,则返回其对应的value值;否则返回null。
总的来说,ConcurrentHashMap的get()方法通过哈希定位和遍历查找的方式来获取指定key对应的value值,而在整个过程中不需要加锁,这也是它的高效之处。
阅读全文