Los métodos wait(), notify() y notifyAll() son parte integral del modelo de concurrencia de Java. Pertenecen a la clase Object, que es la raíz de la jerarquía de clases en Java. Esto significa que cada clase en Java hereda estos métodos de la clase Object.
La clase Objeto es la superclase de todas las clases en Java. Proporciona un conjunto de métodos básicos que hereda cada clase, incluidos toString(), equals() y hashCode(). Los métodos wait(), notify() y notifyAll() también forman parte de esta clase, lo que permite que los subprocesos se comuniquen y coordinen sus actividades.
Para comprender cómo funcionan estos métodos, veamos algunos ejemplos prácticos.
Aquí hay un ejemplo sencillo que demuestra el uso de estos 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(); } }
En el ejemplo anterior:
Verá el siguiente resultado indicando las operaciones del productor y del consumidor:
Resource produced. Resource consumed. ...
Este resultado demuestra cómo wait(), notify() y notifyAll() coordinan la interacción productor-consumidor.
Al comprender a qué clase pertenecen los métodos wait(), notify() y notifyAll() y cómo funcionan, podrá administrar eficazmente comunicación entre subprocesos en sus aplicaciones Java. Estos métodos son esenciales para garantizar que los subprocesos cooperen y compartan recursos de manera eficiente.
Si tienes alguna pregunta o necesitas más aclaraciones, ¡no dudes en dejar un comentario a continuación!
Lea más publicaciones en: ¿A qué clase pertenecen los métodos wait(), notify() y notifyAll()?
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3