【发布时间】:2018-01-15 23:24:59
【问题描述】:
ReentrantReadWriteLock的getReadHoldCount和getReadLockCount有什么区别?
【问题讨论】:
-
文档的哪一部分你不明白?
-
我(多次)阅读了 IDE 中的文档,并错过了“由当前线程”这几个词来产生影响
标签: java concurrency
ReentrantReadWriteLock的getReadHoldCount和getReadLockCount有什么区别?
【问题讨论】:
标签: java concurrency
阅读文档,即方法的javadoc:
getReadHoldCount():返回当前线程持有读锁的次数,如果当前线程没有持有读锁,则返回零。
getReadLockCount():返回持有的读锁数。
记住,一个线程可以多次调用ReadLock上的lock(),这只会占用一个实际的锁,但每次调用lock()必须在实际锁之前调用unlock()发布。
锁计数是具有读锁的线程数。
写锁有对应的方法:
getWriteHoldCount():返回当前线程持有写锁的次数,如果当前线程没有持有写锁,则返回零。
和之前一样,线程可能会多次持有写锁。
那么为什么没有getWriteLockCount()?因为最多一个线程可以有一个写锁,所以返回一个计数是没有意义的。一个布尔值就足够了:isWriteLocked():如果任何线程持有写锁,则返回 true,否则返回 false。
【讨论】: