在 Java 中,执行ReentrantLock.lock()
并ReetrantLock.unlock()
使用与 ? 相同的锁定机制synchronized()
?
我的猜测是“不”,但我希望是错的。
例子:
想象一下线程 1 和线程 2 都可以访问:
ReentrantLock lock = new ReentrantLock();
线程 1 运行:
synchronized (lock) {
// blah
}
线程 2 运行:
lock.lock();
try {
// blah
}
finally {
lock.unlock();
}
假设线程 1 先到达它的部分,然后在线程 1 完成之前线程 2:线程 2 是等待线程 1 离开synchronized()
块,还是继续运行?