3
ReentrantReadWriteLock.ReadLock
ReentrantReadWriteLock.WriteLock

上記の 2 つのクラスに対して、このようにロックを呼び出しますか?

try {
     readLock.tryLock(10, TimeUnit.SECONDS)
     [...]
} finally {
     readLock.unlock();
}

また

readLock.tryLock(10, TimeUnit.SECONDS)
try {

     [...]
} finally {
     readLock.unlock();
}

どちらがより安全ですか?同じことがlock()方法と方法に適用されtryLock()ますか?

4

2 に答える 2

5

条件セクションに入る必要があります。ロックを取得できなかった場合、データを使用することはできません。

if (readLock.tryLock(10, TimeUnit.SECONDS)) {
    try {

         [...]
    } finally {
         readLock.unlock();
    }
} else {
    // failed to get lock
}
于 2013-06-14T22:50:49.523 に答える