为什么没有办法检查当前线程是否持有ReentrantReadWriteLock的读锁



我发现ReentrantReadWriteLock的写锁提供了一个isHeldByCurrentThread()方法来检查调用线程是否持有该锁。

但是对于读锁没有相应的isHeldByCurrentThread()方法。为什么不呢?

我认为答案在Doug Leas对这个问题的评论中:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6207928.

Doug Lea写道:

当前的设计和行为是有意的。读取锁通常没有定义为具有所有权概念,因此无法测试所有权…JSR166EG收到了一些请求,可以选择支持每线程读取保持跟踪。这样做会显著增加锁开销,因此需要由可选的构造参数来控制。我们正在调查。

ReentrantReadWriteLock.getReadHoldCount()似乎完成了这项工作。

相关内容

  • 没有找到相关文章

最新更新