Método de notificación de Java() en la sincronización de subprocesos con ejemplos

El método de notificación() se define en la clase de objeto, que es la clase de nivel superior de Java. Se usa para activar solo un subproceso que está esperando un objeto, y ese subproceso luego comienza a ejecutarse. El método de notificación de clase de subproceso() se utiliza para activar un solo subproceso. Si varios subprocesos están esperando notificación y usamos el método de notificación(), solo un subproceso recibirá la notificación y los demás tendrán que esperar por más. Este método no devuelve ningún valor.

Se usa con el método wait(), para comunicarse entre los subprocesos como un subproceso que pasa al estado de espera por el método wait(), estará allí hasta que cualquier otro subproceso llame al método notificar() o notificar a Todos().

Sintaxis:

public final void notify() ; 

Implementación:

  • La palabra clave sincronizada se utiliza para acceso exclusivo.
  • wait() le indica al subproceso que llama que apague el monitor y se duerma hasta que otro subproceso ingrese al monitor y llame a notificar().
  • notificar() despierta el primer hilo que llamó a esperar() en el mismo objeto.

Ejemplo

Java

// Java program to Illustrate notify() method in Thread
// Synchronization.
  
// Importing required classes
import java.io.*;
import java.util.*;
  
// Class 1
// Thread1
// Helper class extending Thread class
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Creating object(thread) of class 2
        Thread2 objB = new Thread2();
  
        // Starting the thread
        objB.start();
  
        synchronized (objB)
        {
  
            // Try block to check for exceptions
            try {
  
                // Display message only
                System.out.println(
                    "Waiting for Thread 2 to complete...");
  
                // wait() method for thread to be in waiting
                // state
                objB.wait();
            }
  
            // Catch block to handle the exceptions
            catch (InterruptedException e) {
  
                // Print the exception along with line
                // number using printStackTrace() method
                e.printStackTrace();
            }
  
            // Print and display the total threads on the
            // console
            System.out.println("Total is: " + objB.total);
        }
    }
}
// Class 2
// Thread2
// Helper class extending Thread class
class Thread2 extends Thread {
  
    int total;
  
    // run() method  which is called automatically when
    // start() is initiated for the same
    // @Override
    public void run()
    {
  
        synchronized (this)
        {
  
            // iterating over using the for loo
            for (int i = 0; i < 10; i++) {
  
                total += i;
            }
  
            // Waking up the thread in waiting state
            // using notify() method
            notify();
        }
    }
}
Producción

Waiting for Thread 2 to complete...
Total is: 45

Publicación traducida automáticamente

Artículo escrito por sanketnagare y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *