Held in this context means that the lock has been requested and provided. It is not considered held if you are just waiting for it.
There are known issue with the ReentrantReadWriteLock
when a large number of threads are requesting locks. Dr. Heinz Kabutz produced an interesting newsletter on lock starvation with them.
I understand many of these issues have been fixed with the new Java 7 Phaser but I am not yet sufficiently familliar with it to say one way or the other.