[英]lock() method in ConcurrentHashMap
可能這對我來說很愚蠢,但我查看了ConcurrentHashMap
的源代碼,我無法在該類的任何地方看到方法lock()
的定義,但我可以看到這種方法在多個時候被調用。 在Eclipse中,當我在lock()
上打開聲明時,它顯示了類ReentrantLock.lock()
,所以我很困惑這是如何工作的? 對於lock()方法調用, ReentrantLock
的對象引用在哪里?
V readValueUnderLock(HashEntry<K,V> e) {
lock(); // where is this method defined in CHM ?
try {
return e.value;
} finally {
unlock();
}
}
該代碼片段位於ConcurrentHashMap
內的一個名為Segment
的內部類中,它擴展了ReentrantLock
ConcurrentHashMap中沒有鎖定方法。 看看它的javadoc 。 所以我看不出你怎么能看到這個不存在的方法的任何代碼。
readValueUnderLock
是內部類Segment
一種方法,它擴展了ReentrantLock
。 所以你看到的鎖定方法是ReentrantLock的鎖定方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.