Встречается на собеседованиях • сегодня

В чем разница между ReentrantLock и synchronized

ReentrantLock и synchronized оба обеспечивают потокобезопасность, но имеют ключевые различия:

  1. Гибкость
    ReentrantLock позволяет явно блокировать и разблокировать (lock(), unlock()), поддерживает таймауты (tryLock(timeout)), честность (fairness) и условия (Condition). synchronized — автоматический, без этих возможностей.
  1. Производительность
    В Java 5+ ReentrantLock может быть быстрее в высококонкурентных сценариях. synchronized оптимизирован JVM (biased locking, adaptive spinning).

  2. Читаемость
    synchronized лаконичнее (встроен в язык), ReentrantLock требует ручного управления.

Пример:

java
// synchronized
synchronized (this) {
    // critical section
}

// ReentrantLock
Lock lock = new ReentrantLock();
lock.lock();
try {
    // critical section
} finally {
    lock.unlock();
}

Когда что использовать:

  • synchronized — для простых случаев.
  • ReentrantLock — когда нужны продвинутые фичи (таймауты, условия).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы