Junior — Middle
88
Синхрондалған әдістің ішінде ағымдағы объектіге wait() әдісі шақырылса, не болады?
AI-дан жауап
sobes.tech AI
Если внутри метода, помеченного ключевым словом synchronized, вызвать метод wait() на текущем объекте, то поток:
- Освободит монитор (блокировку) объекта, позволяя другим потокам войти в синхронизированный блок или метод.
- Перейдёт в состояние ожидания (wait), пока другой поток не вызовет
notify()илиnotifyAll()на том же объекте.
Таким образом, wait() временно приостанавливает выполнение текущего потока и освобождает монитор, что позволяет избежать взаимных блокировок и реализовать кооперативную работу потоков.
Пример:
synchronized(this) {
while (!условие) {
wait(); // освобождает монитор и ждёт уведомления
}
// код, выполняющийся после пробуждения
}