Sobes.tech
Back to questions
Senior
9

Почему выбрал именно wait/notify, а не ReentrantLock?

Companies where asked
СБК ПАРУС

Answer from AI

sobes.tech AI

Выбор между wait/notify и ReentrantLock зависит от конкретных требований и контекста задачи.

Почему wait/notify:

  • Это базовые механизмы синхронизации в Java, встроенные в Object, не требуют дополнительных объектов.
  • Подходят для простых случаев, когда нужно просто приостановить поток до наступления определённого события.
  • Могут быть чуть более производительными в очень простых сценариях из-за отсутствия дополнительных обёрток.

Почему не ReentrantLock:

  • ReentrantLock предоставляет более гибкие возможности, например, tryLock, возможность прерывания ожидания, условные переменные (Condition).
  • Если задача не требует этих расширенных возможностей, использование ReentrantLock может быть избыточным.

Таким образом, если задача простая и не требует расширенного управления блокировками, wait/notify — более лёгкий и прямой инструмент. Если же нужна гибкость и дополнительные функции, стоит использовать ReentrantLock.


Пример использования wait/notify:

synchronized (lock) {
    while (!condition) {
        lock.wait();
    }
    // действие после наступления условия
}

// В другом потоке
synchronized (lock) {
    condition = true;
    lock.notify();
}