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