为什么无法检查当前线程是否保持ReentrantReadWriteLock的读锁定?

rol*_*360 9 java concurrency multithreading java.util.concurrent concurrent-programming

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

但是没有相应isHeldByCurrentThread()的读锁方法.为什么不?

Mig*_*boa 14

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

Doug Lea写道:

目前的设计和行为是有意的.读锁通常没有定义为拥有所有权的概念,因此无法测试所有权.... JSR166 EG已收到一些请求,可选择支持每线程读取保持跟踪.这样做会显着增加锁定开销,因此需要由可选的构造参数来控制.我们正在研究它.