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