Junior — Middle
Na ktorých prvkoch je bezpečné volať metódu wait() v synchronizovanom kontexte?
sobes.tech AI
Odpoveď od AI
Metóda wait() v Jave sa môže volať iba na objektoch, ktorých monitor (zámok monitora) je prevzatý aktuálnym vláknom, teda v rámci synchronizovaného bloku alebo synchronizovanej metódy na tomto objekte. To znamená, že je bezpečné volať wait() iba na objektoch, na ktorých držíte monitor, napríklad:
synchronized (obj) {
obj.wait(); // bezpečne
}
Ak zavoláte wait() mimo synchronizovaného kontextu na tomto objekte, bude vyhodená výnimka IllegalMonitorStateException. Preto môžete volať wait() iba na objektoch, na ktorých aktuálne vlákno drží monitor (t.j. v rámci synchronized(obj) alebo synchronizovanej metódy tohto objektu).