ReentrantReadWriteLock getReadHoldCount vs getReadLockCount

时间:2018-01-15 23:24:59

标签: java concurrency

ReRerantReadWriteLock的getReadHoldCount和getReadLockCount有什么区别?

1 个答案:

答案 0 :(得分:0)

阅读文档,即方法的javadoc:

getReadHoldCount()返回当前线程对读锁的保留次数,如果当前线程未保持读锁定,则返回零。

getReadLockCount()返回保留的读锁数。

请记住,一个主题可以在ReadLock多次调用lock(),这只需要一次实际锁定,但每次调用lock()都必须通过调用{{}来匹配3}}在释放实际锁之前。

锁定计数是具有读锁定的线程数。

写锁定有相应的方法:

unlock()返回当前线程写锁的保留次数,如果当前线程未保持写锁,则返回零。

与之前相同,线程可以多次保持写锁定。

那为什么没有getWriteLockCount()?因为最多只有一个线程可以有写锁定,所以返回计数没有意义。布尔值就足够了:getWriteHoldCount()如果任何线程持有写锁,则返回true,否则返回false。