【发布时间】:2016-05-07 10:03:43
【问题描述】:
考虑这个JDK标准接口:
public interface ReadWriteLock{
public Lock readLock();
public Lock writeLock();
}
B. Goetz in Java Concurrency 在实践中提到从 readLock 升级到 writeLock 很容易死锁。
如果两个读取器同时尝试升级到写锁, 也不会重新获得读锁。
让我感到困惑的是 两个 读者试图升级。但即使是一个读者就足够了,不是吗?如果读者尝试升级它还没有释放读锁。在持有读锁的情况下尝试获取写锁是死锁的。
因此,我认为提供升级操作在理论上甚至是荒谬的。或者也许一个实现可以解决这个问题?
【问题讨论】:
-
“试图在持有读锁的情况下获取写锁是死锁的” - 你是什么意思?你认为为什么会这样?
标签: java multithreading readwritelock