В Java, do ReentrantLock.lock()
и ReetrantLock.unlock()
используют тот же механизм блокировки, что и synchronized()
?
Мое предположение: "Нет", но я надеюсь ошибиться.
Пример:
Представьте, что в Thread 1 и Thread 2 есть доступ к:
ReentrantLock lock = new ReentrantLock();
Тема 1:
synchronized (lock) {
// blah
}
Режимы Thread 2:
lock.lock();
try {
// blah
}
finally {
lock.unlock();
}
Предположим, что Thread 1 сначала достигнет своей части, затем Thread 2 до завершения Thread 1: будет ли Thread 2 ждать, пока Thread 1 покинет блок synchronized()
, или он продолжит работу и запустится?