Os métodos wait(), notify() e notifyAll() são essenciais para o modelo de simultaneidade Java. Eles pertencem à classe Object, que é a raiz da hierarquia de classes em Java. Isso significa que cada classe em Java herda esses métodos da classe Object.
A classe Object é a superclasse de todas as classes em Java. Ele fornece um conjunto de métodos básicos que cada classe herda, incluindo toString(), equals() e hashCode(). Os métodos wait(), notify() e notifyAll() também fazem parte desta classe, permitindo que threads se comuniquem e coordenem suas atividades.
Para entender como esses métodos funcionam, vejamos alguns exemplos práticos.
Aqui está um exemplo simples que demonstra o uso destes métodos:
class SharedResource { private boolean available = false; public synchronized void consume() throws InterruptedException { while (!available) { wait(); // Wait until the resource is available } // Consume the resource System.out.println("Resource consumed."); available = false; notify(); // Notify that the resource is now unavailable } public synchronized void produce() { // Produce the resource available = true; System.out.println("Resource produced."); notify(); // Notify that the resource is available } } public class Main { public static void main(String[] args) { SharedResource resource = new SharedResource(); Thread producer = new Thread(() -> { try { while (true) { Thread.sleep(1000); // Simulate time to produce resource.produce(); } } catch (InterruptedException e) { e.printStackTrace(); } }); Thread consumer = new Thread(() -> { try { while (true) { resource.consume(); Thread.sleep(2000); // Simulate time to consume } } catch (InterruptedException e) { e.printStackTrace(); } }); producer.start(); consumer.start(); } }
No exemplo acima:
Você verá a seguinte saída indicando as operações de produtor e consumidor:
Resource produced. Resource consumed. ...
Esta saída demonstra como wait(), notify() e notifyAll() coordenam a interação produtor-consumidor.
Ao entender a qual classe os métodos wait(), notify() e notifyAll() pertencem e como eles funcionam, você pode gerenciar com eficiência comunicação entre threads em seus aplicativos Java. Esses métodos são essenciais para garantir que os threads cooperem e compartilhem recursos de forma eficiente.
Se você tiver alguma dúvida ou precisar de mais esclarecimentos, fique à vontade para deixar um comentário abaixo!
Leia mais postagens em: A qual classe pertencem os métodos wait(), notify() e notifyAll()?
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3