Sobes.tech
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 chame notify() ou notifyAll() 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
}