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.