Sobes.tech
Junior — Middle

Em quais elementos é seguro chamar o método wait() estando num contexto sincronizado?

sobes.tech IA

Resposta da IA

O método wait() em Java só pode ser chamado em objetos cujo monitor (fecho do monitor) foi adquirido pelo thread atual, ou seja, dentro de um bloco sincronizado ou método sincronizado nesse objeto. Isso significa que é seguro chamar wait() apenas em objetos nos quais você mantém o monitor, por exemplo:

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

Se você chamar wait() fora de um contexto sincronizado nesse objeto, será lançada uma IllegalMonitorStateException. Portanto, você só pode chamar wait() em objetos nos quais o thread atual mantém o monitor (ou seja, dentro de synchronized(obj) ou método sincronizado desse objeto).