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();
}