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).