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