我现在在我的代码中使用ReentrantReadWriteLock在树状结构上同步访问。这个结构很大,可以同时被多个线程读取,偶尔会修改其中的一小部分——所以它似乎很适合读写习惯。我知道对于这个特定的类,不能将读锁提升为写锁,因此根据Javadocs,必须在获得写锁之前释放读锁。我之前已经在不可重入上下文中成功使用过这种模式。然而,我发现我无法在不永久阻塞的情况下可靠地获取写锁。由于读锁是可重入的,我实际上是这样使用它的,所以简单的代码lock.getReadLock().unlock();lock.getWriteLock().lock()如果我以可重入方式获得了读锁,则可以阻止。每