簡體   English   中英

ConcurrentHashMap中的lock()方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM