Junior — Middle
Wat gebeurt er met de stroom als binnen een gemarkeerde synchronized-methode de methode wait() wordt aangeroepen op het huidige object?
sobes.tech AI
Antwoord van AI
Если внутри метода, помеченного ключевым словом synchronized, вызвать метод wait() на текущем объекте, то поток:
- Освободит монитор (блокировку) объекта, позволяя другим потокам войти в синхронизированный блок или метод.
- Перейдёт в состояние ожидания (wait), пока другой поток не вызовет
notify()илиnotifyAll()на том же объекте.
Таким образом, wait() временно приостанавливает выполнение текущего потока и освобождает монитор, что позволяет избежать взаимных блокировок и реализовать кооперативную работу потоков.
Пример:
synchronized(this) {
while (!условие) {
wait(); // освобождает монитор и ждёт уведомления
}
// код, выполняющийся после пробуждения
}