Método ArrayBlockingQueue poll() en Java

ArrayBlockingQueue es una cola de bloqueo limitada que almacena los elementos respaldados internamente por una array.

  • La clase ArrayBlockingQueue es miembro de Java Collections Framework.
  • Acotado significa que tendrá un tamaño fijo, no puede almacenar el número de elementos más que la capacidad de la cola.
  • La cola también sigue la regla FIFO (primero en entrar, primero en salir) para almacenar y eliminar elementos de la cola.
  • Si intenta colocar un elemento en una cola llena o tomar un elemento de una cola vacía, la cola lo bloqueará.

Hay dos tipos de método poll() dependiendo del número de parámetros pasados.

  1. El método poll() recupera y elimina el elemento del encabezado de esta cola . Si la cola está vacía, el método devolverá un valor nulo.
    Sintaxis:
    public E poll()

    Valor devuelto: el método devuelve el elemento del encabezado de esta cola, o nulo si esta cola está vacía.

    Los siguientes programas ilustran el método poll() de ArrayBlockingQueue.

    Programa 1:

    /*
    *Program Demonstrate poll() method of ArrayBlockingQueue.
    */
      
    import java.util.concurrent.ArrayBlockingQueue;
      
    public class GFG {
      
        public static void main(String[] args)
        {
            // define capacity of ArrayBlockingQueue
            int capacity = 5;
      
            // create object of ArrayBlockingQueue
            ArrayBlockingQueue<Integer> queue = new 
                   ArrayBlockingQueue<Integer>(capacity);
      
            // Add elements to ArrayBlockingQueue
            queue.offer(423);
            queue.offer(233);
            queue.offer(356);
      
            // print elements
            System.out.println("Queue Contains" + queue);
      
            // try to poll  elements
            System.out.println("Removing From head: "
                                           queue.poll());
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: "
                                           queue.poll());
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: "
                                           queue.poll());
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: "
                                           queue.poll());
            System.out.println("Queue Contains" + queue);
        }
    }
    Producción:

    Queue Contains[423, 233, 356]
    Removing From head: 423
    Queue Contains[233, 356]
    Removing From head: 233
    Queue Contains[356]
    Removing From head: 356
    Queue Contains[]
    Removing From head: null
    Queue Contains[]
    

    Programa 2:

    /*
    * Program Demonstrate poll() method of ArrayBlockingQueue.
    */
      
    import java.util.concurrent.ArrayBlockingQueue;
      
    public class GFG {
      
        // Create a User Object with name and age as an attribute
        public class User {
      
            public String name;
            public String age;
            User(String name, String age)
            {
                this.name = name;
                this.age = age;
            }
        }
      
        // Main Method
        public static void main(String[] args)
        {
            GFG gfg = new GFG();
            gfg.pollMethodExample();
        }
      
        // Method to give example of contains function
        public void pollMethodExample()
        {
      
            // Define the capacity of ArrayBlockingQueue
            int capacity = 5;
      
            // Create object of ArrayBlockingQueue
            ArrayBlockingQueue<User> queue = 
                   new ArrayBlockingQueue<User>(capacity);
      
            // Create user objects
            User user1 = new User("Aman", "24");
            User user3 = new User("Sanjeet", "25");
      
            // Add Objects to ArrayBlockingQueue
            queue.offer(user1);
            queue.offer(user3);
      
            // Poll users from queue
            User user = queue.poll();
            System.out.println("removing user having name = "
                                                + user.name);
            user = queue.poll();
            System.out.println("removing user having name = "
                                                + user.name);
      
            // Now queue is empty
            // Try to remove it will return null
            user = queue.poll();
            System.out.println("removing user having name = "
                                                     + user);
        }
    }
    Producción:

    removing user having name = Aman
    removing user having name = Sanjeet
    removing user having name = null
    
  2. El método de encuesta ( tiempo de espera largo, unidad de unidad de tiempo ) recupera y elimina el elemento del encabezado de esta cola . Si la cola está vacía, lo hará, espere hasta un tiempo específico para que un elemento esté disponible.
    Sintaxis:
    public E poll(long timeout, TimeUnit unit) throws InterruptedException

    Parámetros: El método toma dos parámetros:

    • tiempo de espera (largo): cuánto tiempo esperar antes de darse por vencido, en unidades de unidad.
    • unidad (TimeUnit): una unidad de tiempo que determina cómo interpretar el parámetro de tiempo de espera.

    Valor devuelto: el método devuelve el encabezado de esta cola, o nulo si transcurre el tiempo de espera especificado antes de que un elemento esté disponible.
    Excepción: el método arroja InterruptedException si se interrumpe mientras espera.

    El siguiente programa ilustra el método de sondeo (tiempo de espera prolongado, unidad de unidad de tiempo) de ArrayBlockingQueue.

    /*
    * Program Demonstrate offer(E e, long timeout, TimeUnit unit)
    * method of ArrayBlockingQueue.
    */
      
    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.TimeUnit;
      
    public class GFG {
      
        public static void main(String[] args) 
                           throws InterruptedException
        {
            // Define capacity of ArrayBlockingQueue
            int capacity = 5;
      
            // Create object of ArrayBlockingQueue
            ArrayBlockingQueue<Integer> queue = 
                new ArrayBlockingQueue<Integer>(capacity);
      
            // Add elements to ArrayBlockingQueue
            queue.offer(423);
            queue.offer(233);
            queue.offer(356);
      
            // Print elements
            System.out.println("Queue Contains" + queue);
      
            // Try to poll  elements
            System.out.println("Removing From head: " 
                      + queue.poll(10, TimeUnit.SECONDS));
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: " 
                      + queue.poll(10, TimeUnit.SECONDS));
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: "
                        queue.poll(10, TimeUnit.SECONDS));
            System.out.println("Queue Contains" + queue);
            System.out.println("Removing From head: "
                       queue.poll(10, TimeUnit.SECONDS));
        }
    }
    Producción:

    Queue Contains[423, 233, 356]
    Removing From head: 423
    Queue Contains[233, 356]
    Removing From head: 233
    Queue Contains[356]
    Removing From head: 356
    Queue Contains[]
    Removing From head: null
    

Referencia:
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ArrayBlockingQueue.html#poll()

Publicación traducida automáticamente

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