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()
ブロックを離れるのを待ちますか、それとも先に進んで実行しますか?