ConcurrentHashMap中的lock()方法

时间:2012-01-07 21:07:20

标签: java 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();
        }
    }

2 个答案:

答案 0 :(得分:8)

该代码片段位于名为ConcurrentHashMap的{​​{1}}内的内部类中,扩展了Segment

答案 1 :(得分:0)

ConcurrentHashMap中没有锁定方法。看看its javadoc。所以我看不出你怎么能看到这个不存在的方法的任何代码。

readValueUnderLock是内部类Segment的一种方法,它扩展了ReentrantLock。所以你看到的锁定方法是ReentrantLock的锁定方法。