【问题标题】:ReentrantReadWriteLock getReadHoldCount vs getReadLockCountReentrantReadWriteLock getReadHoldCount 与 getReadLockCount
【发布时间】:2018-01-15 23:24:59
【问题描述】:

ReentrantReadWriteLock的getReadHoldCount和getReadLockCount有什么区别?

【问题讨论】:

  • 文档的哪一部分你不明白?
  • 我(多次)阅读了 IDE 中的文档,并错过了“由当前线程”这几个词来产生影响

标签: java concurrency


【解决方案1】:

阅读文档,即方法的javadoc:

getReadHoldCount()返回当前线程持有读锁的次数,如果当前线程没有持有读锁,则返回零。

getReadLockCount()返回持有的读锁数。

记住,一个线程可以多次调用ReadLock上的lock(),这只会占用一个实际的锁,但每次调用lock()必须在实际锁之前调用unlock()发布。

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

写锁有对应的方法:

getWriteHoldCount()返回当前线程持有写锁的次数,如果当前线程没有持有写锁,则返回零。

和之前一样,线程可能会多次持有写锁。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多