【发布时间】:2012-12-05 23:15:30
【问题描述】:
我发现ReentrantReadWriteLock的写锁提供了isHeldByCurrentThread()方法来检查调用线程是否持有那个锁。
但是读锁没有对应的isHeldByCurrentThread()方法。为什么不呢?
【问题讨论】:
标签: java multithreading concurrency java.util.concurrent concurrent-programming
我发现ReentrantReadWriteLock的写锁提供了isHeldByCurrentThread()方法来检查调用线程是否持有那个锁。
但是读锁没有对应的isHeldByCurrentThread()方法。为什么不呢?
【问题讨论】:
标签: java multithreading concurrency java.util.concurrent concurrent-programming
ReentrantReadWriteLock.getReadHoldCount() 似乎可以完成这项工作。
【讨论】:
我认为答案在 Doug Leas 对此问题的评论中:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6207928。
道格·李写道:
当前的设计和行为是有意的。读锁通常没有定义为具有所有权的概念,因此无法测试所有权。 ... JSR166 EG 已收到一些请求,以可选地支持每线程读取保持跟踪。这样做会显着增加锁开销,因此需要由可选的构造参数控制。我们正在调查。
【讨论】: