2

これは私の側ではばかげているかもしれませんが、のソースコードを見て、そのクラスのどこにもConcurrentHashMapメソッドの定義を見ることができませんでしたが、このメソッドが何度か呼び出されているのを見ることができます。lock()Eclipseで、でopen宣言を言うとlock()、クラスが表示ReentrantLock.lock()されるので、これがどのように機能するのか混乱していますか?ReentrantLocklock()メソッド呼び出しのオブジェクト参照はどこにありますか?

 V readValueUnderLock(HashEntry<K,V> e) {
        lock(); // where is this method defined in CHM ?
        try {
            return e.value;
        } finally {
            unlock();
        }
    }
4

2 に答える 2

8

ConcurrentHashMapそのコードフラグメントは、と呼ばれる内部クラス内Segmentにあります。ReentrantLock

于 2012-01-07T21:10:49.900 に答える
0

ConcurrentHashMapにはロックメソッドはありません。そのjavadocを見てください。したがって、この存在しないメソッドのコードをどのように見ることができたのかわかりません。

readValueUnderLockSegmentは、を拡張する内部クラスのメソッドですReentrantLock。したがって、表示されているロックメソッドはReentrantLockのロックメソッドです。

于 2012-01-07T21:14:17.637 に答える