Sobes.tech
Junior — Middle

Какво ще се случи с потока, ако вътре в метод, маркиран като synchronized, извикаме метода wait() на текущия обект?

sobes.tech AI

Отговор от AI

Ако вътре в метод, маркиран с ключовата дума synchronized, извикате метода wait() върху текущия обект, нишката:

  • Ще освободи монитора (блокировката) на обекта, позволявайки на други нишки да влязат в синхронизирания блок или метод.
  • Ще премине в състояние на изчакване (wait), докато друга нишка не извика notify() или notifyAll() върху същия обект.

По този начин, wait() временно спира изпълнението на текущата нишка и освобождава монитора, което помага да се избегнат взаимните блокировки и да се реализира кооперативна работа между нишките.

Пример:

synchronized(this) {
    while (!условие) {
        wait(); // освобождава монитора и чака уведомление
    }
    // код, който се изпълнява след събуждане
}