Junior — Middle
O que acontecerá com o fluxo se, dentro de um método marcado como synchronized, chamar o método wait() no objeto atual?
sobes.tech IA
Resposta da IA
Se dentro de um método marcado com a palavra-chave synchronized chamar o método wait() no objeto atual, o thread:
- Liberará o monitor (bloqueio) do objeto, permitindo que outros threads entrem no bloco ou método sincronizado.
- Passará para o estado de espera (
wait), até que outro thread chamenotify()ounotifyAll()no mesmo objeto.
Assim, wait() suspende temporariamente a execução do thread atual e libera o monitor, ajudando a evitar bloqueios mútuos e a implementar trabalho cooperativo entre threads.
Exemplo:
synchronized(this) {
while (!condição) {
wait(); // libera o monitor e espera a notificação
}
// código que é executado após a retomada
}