Junior — Middle
Какво ще се случи с потока, ако вътре в метод, маркиран като synchronized, извикаме метода wait() на текущия обект?
sobes.tech AI
Отговор от AI
Ако вътре в метод, маркиран с ключовата дума synchronized, извикате метода wait() върху текущия обект, нишката:
- Ще освободи монитора (блокировката) на обекта, позволявайки на други нишки да влязат в синхронизирания блок или метод.
- Ще премине в състояние на изчакване (
wait), докато друга нишка не извикаnotify()илиnotifyAll()върху същия обект.
По този начин, wait() временно спира изпълнението на текущата нишка и освобождава монитора, което помага да се избегнат взаимните блокировки и да се реализира кооперативна работа между нишките.
Пример:
synchronized(this) {
while (!условие) {
wait(); // освобождава монитора и чака уведомление
}
// код, който се изпълнява след събуждане
}