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(); } } }
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