Sobes.tech
Junior — Middle

Na kojim elementima je sigurno pozvati metodu wait() u sinhronizovanom kontekstu?

sobes.tech АИ

Одговор од АИ

Metoda wait() u Javi može se pozvati samo na objektima čiji je monitor (brava monitora) preuzet od strane trenutnog niti, tj. unutar sinkronizovanog bloka ili metode sinkronizovane na tom objektu. To znači da je sigurno pozvati wait() samo na objektima na kojima držite monitor, na primer:

synchronized (obj) {
    obj.wait(); // sigurno
}

Ako pozovete wait() van sinkronizovanog konteksta na tom objektu, biće bačen IllegalMonitorStateException. Stoga, možete pozvati wait() samo na objektima na kojima trenutna nit drži monitor (tj. unutar synchronized(obj) ili sinkronizovane metode tog objekta).