Sobes.tech
Junior — Middle

Qual é a diferença entre o método notify e notifyAll no contexto de sincronização de threads?

sobes.tech IA

Resposta da IA

Em Java, os métodos notify e notifyAll são usados para acordar threads que estão à espera no monitor de um objeto (através de wait).

  • notify() acorda um thread aleatório que está à espera nesse objeto.
  • notifyAll() acorda todos os threads que estão à espera nesse objeto.

O uso de notify é adequado quando basta acordar um único thread, por exemplo, ao implementar uma fila com um único consumidor. notifyAll é útil quando é necessário acordar todos os threads para que possam verificar a condição e continuar o trabalho, por exemplo, em uma lógica de sincronização complexa.

É importante lembrar que os threads acordados não começam a executar imediatamente — eles passam para um estado de prontidão e aguardam para adquirir o monitor.