I am using in my code at the moment a ReentrantReadWriteLock to synchronize access over a tree-like structure. This structure is large, and read by many threads at once with occasional modifications to small parts of it – so it seems to fit the read-write idiom well. I understand that with this particular class, one cannot elevate a read lock