Clase java.lang.ref.ReferenceQueue en Java

Una ReferenceQueue es una estructura de datos simple en la que el recolector de elementos no utilizados coloca objetos de referencia cuando el campo de referencia se borra (se establece en nulo). Usaría una cola de referencia para averiguar cuándo un objeto se vuelve accesible de manera suave, débil o fantasma, para que su programa pueda tomar alguna acción basada en ese conocimiento. Por ejemplo, un programa puede realizar algún proceso de limpieza posterior a la finalización que requiera que un objeto sea inalcanzable (como la reasignación de recursos fuera del montón de Java) al enterarse de que un objeto se ha vuelto accesible fantasma. 

java.lang.ref.ReferenceQueue Class in Java

Se puede usar una ReferenceQueue para averiguar si un objeto es débil, suave o fantasma inalcanzable. Ahora profundizando, definamos el constructor invocado aquí en esta clase de la siguiente manera:

public ReferenceQueue(): Construye una nueva cola de objetos de referencia.

Además, definamos los métodos en ReferenceQueue Class

Nombre del método Descripción del método
encuesta() Sondea esta cola para ver si hay un objeto de referencia disponible. Si uno está disponible sin más demora, se elimina de la cola y se devuelve. De lo contrario, este método devuelve inmediatamente un valor nulo.
retirar() Elimina el siguiente objeto de referencia en esta cola, bloqueándolo hasta que uno esté disponible.
eliminar (Tiempo de espera prolongado) Elimina el siguiente objeto de referencia en esta cola, bloqueándolo hasta que cualquiera de ellos esté disponible o expire el período de tiempo de espera dado.

Analicemos los métodos anteriores en detalle individualmente de la siguiente manera:

Método 1: El método poll() de Queue Interface devuelve y elimina el elemento en la parte delantera del contenedor. Elimina el elemento en el contenedor. El método no arroja una excepción cuando la Cola está vacía, sino que devuelve un valor nulo.

Sintaxis:

E poll()

Devoluciones: este método devuelve el elemento al frente del contenedor o al principio de la cola. Devuelve nulo cuando la cola está vacía.

Método 2: El método remove() de Queue Interface devuelve y elimina el elemento al frente del contenedor. Elimina la cabecera del contenedor. El método lanza una excepción conocida como NoSuchElementException cuando la cola está vacía.

Sintaxis:

E remove()

Devoluciones: este método devuelve la cabeza de la cola.

Excepción: la función lanza una excepción NoSuchElementException cuando la cola está vacía.

A estas alturas, todos hemos terminado de discutir los principales métodos que hemos estado aquí en esta clase. Sumerjámonos de inmediato en la implementación de estos métodos en esta clase.

Ejemplo:

Java

// Java Program to illustrate ReferenceQueue Class
  
// Importing classes from package- java.lang.ref
// to make a deal between program with garbage collector
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
  
// Class 1
// Helper class
class HelperClass {
  
    // Method of this class
    void Display()
    {
        // Print statement whenever
        // function of HelperClass is called
        System.out.println(
            "HelperClass Display() invoked...");
    }
}
  
// Class 2
// Main class
class GFG {
  
    // Main drive method
    public static void main(String[] args)
    {
  
        // Creating new object of HelperClass
        HelperClass obj = new HelperClass();
  
        // Creating Reference queue of HelperClass
        ReferenceQueue<HelperClass> rq
            = new ReferenceQueue<>();
  
        // Creating Phantom reference
        WeakReference<HelperClass> wr
            = new WeakReference<>(obj);
  
        // Display message
        System.out.println("-> Reference Queue Object :");
  
        // Printing reference queue object
        System.out.println(rq);
  
        // Display message
        System.out.println("-> Reference Queue Poll :");
  
        // Checking if phantom object is lined up
        // or cleared in the queue
        // using the poll() method
        System.out.println(rq.poll());
    }
}
Producción

-> Reference Queue Object :
java.lang.ref.ReferenceQueue@214c265e
-> Reference Queue Poll :
null

Publicación traducida automáticamente

Artículo escrito por varunkedia 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 *