Método LinkedBlockingQueue poll() en Java

Hay dos tipos de método poll() en LinkedBlockingQueue.

encuesta()

El método poll() de LinkedBlockingQueue devuelve el encabezado de LinkedBlockingQueue eliminando ese elemento de la cola. Se puede decir que este método recupera y elimina el elemento del encabezado de esta LinkedBlockingQueue. Si la cola está vacía, el método de encuesta devuelve nulo.

Sintaxis:

public E poll()

Valor de retorno: este método recupera y elimina el elemento del encabezado de esta LinkedBlockingQueue. Si la cola está vacía, devuelve nulo.

Los siguientes programas ilustran el método poll() de la clase LinkedBlockingQueue:

Programa 1: Eliminar elementos de LinkedBlockingQueue usando el método poll() donde LinkedBlockingQueue contiene una lista de nombres.

// Java Program Demonstrate poll()
// method of LinkedBlockingQueue
  
import java.util.concurrent.LinkedBlockingQueue;
public class GFG {
  
    public static void main(String[] args)
    {
        // define capacity of LinkedBlockingQueue
        int capacityOfQueue = 4;
  
        // create object of LinkedBlockingQueue
        LinkedBlockingQueue<String> linkedQueue
            = new LinkedBlockingQueue<String>(capacityOfQueue);
  
        // Add element to LinkedBlockingQueue
        linkedQueue.add("Ravi");
        linkedQueue.add("Suraj");
        linkedQueue.add("Harsh");
        linkedQueue.add("Sayan");
  
        // print elements of queue
        System.out.println("Items in Queue are " + linkedQueue);
  
        // we want to remove two elements from queue from head
        // Applying poll() method on queue to remove element
        String removedItem1 = linkedQueue.poll();
  
        // print removedItem and queue
        System.out.println("Removed Item is " + removedItem1);
  
        // print elements of queue after removing first item
        System.out.println("Remaining Items in Queue are "
                           + linkedQueue);
  
        // Applying poll() method on queue to remove another element
        String removedItem2 = linkedQueue.poll();
  
        // print removedItem and queue
        System.out.println("Removed Item is " + removedItem2);
  
        // print elements of queue after removing first item
        System.out.println("Remaining Items in Queue are " + linkedQueue);
    }
}
Producción:

Items in Queue are [Ravi, Suraj, Harsh, Sayan]

Removed Item is Ravi
Remaining Items in Queue are [Suraj, Harsh, Sayan]

Removed Item is Suraj
Remaining Items in Queue are [Harsh, Sayan]

Programa 2: Eliminación de elementos de LinkedBlockingQueue que contiene una lista de empleados y si la cola está vacía, imprime un valor nulo.

// Java Program Demonstrate poll()
// method of LinkedBlockingQueue
  
import java.util.concurrent.LinkedBlockingQueue;
public class GFG {
  
    public void pollingMethod()
    {
        // define capacity of LinkedBlockingQueue
        int capacityOfQueue = 5;
  
        // create object of LinkedBlockingQueue
        LinkedBlockingQueue<Employee> linkedQueue
            = new LinkedBlockingQueue<Employee>(capacityOfQueue);
  
        // Add element to LinkedBlockingQueue
        Employee emp1 = new Employee("Ravi", "Tester", "39000");
        Employee emp2 = new Employee("Sanjeet", "Manager", "98000");
  
        // Add Employee Objects to linkedQueue
        linkedQueue.add(emp1);
        linkedQueue.add(emp2);
  
        // remove elements from the queue
        // and follow this process again and again
        // until the queue becomes empty
        while (linkedQueue.size() != 0) {
  
            // Remove Employee item from LinkedBlockingQueue
            Employee removedEmp = linkedQueue.poll();
  
            // print removedItem
            System.out.println("Removed Item is :");
            System.out.println("Employee Name - " + removedEmp.name);
            System.out.println("Employee Position - " + removedEmp.position);
            System.out.println("Employee Salary - " + removedEmp.salary);
  
            // find size  of linkedQueue
            int size = linkedQueue.size();
  
            // print remaining capacity value
            System.out.println("\nSize of list :" + size + "\n");
        }
  
        // Now size of Queue is Zero
        // Now try to Poll more items
        // Remove Employee item from LinkedBlockingQueue
        Employee removedEmp = linkedQueue.poll();
  
        // print removedItem
        // size is zero so removedItem is null
        System.out.println("Removed Item is : " + removedEmp);
    }
  
    // create an Employee Object with name,
    // position and salary as an attribute
    public class Employee {
  
        public String name;
        public String position;
        public String salary;
        Employee(String name, String position, String salary)
        {
            this.name = name;
            this.position = position;
            this.salary = salary;
        }
  
        @Override
        public String toString()
        {
            return "Employee [name=" + name + ", position="
                + position + ", salary=" + salary + "]";
        }
    }
  
    // Main Method
    public static void main(String[] args)
    {
        GFG gfg = new GFG();
        gfg.pollingMethod();
    }
}
Producción:

Removed Item is :
Employee Name - Ravi
Employee Position - Tester
Employee Salary - 39000

Size of list :1

Removed Item is :
Employee Name - Sanjeet
Employee Position - Manager
Employee Salary - 98000

Size of list :0

Removed Item is : null

sondeo (tiempo de espera prolongado, unidad TimeUnit)

El método de encuesta (tiempo de espera prolongado, unidad de unidad de tiempo) de LinkedBlockingQueue devuelve el encabezado de LinkedBlockingQueue eliminando ese elemento de la cola. Se puede decir que este método recupera y elimina el elemento del encabezado de esta LinkedBlockingQueue. Si la cola está vacía, el método poll() esperará hasta un tiempo específico para que un elemento esté disponible.

Sintaxis:

public E poll(long timeout, TimeUnit unit) throws 

Parámetros: Este método toma dos parámetros obligatorios:

  • tiempo de espera : cuánto tiempo esperar, en unidades de unidad.
  • unidad : una unidad de tiempo para el parámetro de tiempo de espera.

Valor de retorno: este método recupera y elimina el elemento del encabezado de esta LinkedBlockingQueue, o nulo si transcurre el tiempo de espera especificado antes de que un elemento esté disponible.

Excepción Este método arroja una InterruptedException si el método se interrumpe mientras espera que un elemento esté disponible.

Los siguientes programas ilustran el método de encuesta (tiempo de espera prolongado, unidad de unidad de tiempo) de la clase LinkedBlockingQueue:

Programa 1: Eliminar elementos de LinkedBlockingQueue usando el método poll() donde LinkedBlockingQueue contiene una lista de nombres.

// Java program to demonstrate
// poll(long timeout, TimeUnit unit)
// method of LinkedBlockingQueue
  
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
  
public class GFG {
  
    public static void main(String[] args)
        throws InterruptedException
    {
        // define capacity of LinkedBlockingQueue
        int capacityOfQueue = 4;
  
        // create object of LinkedBlockingQueue
        LinkedBlockingQueue<String> linkedQueue
            = new LinkedBlockingQueue<String>(capacityOfQueue);
  
        // Add element to LinkedBlockingQueue
        linkedQueue.add("Ravi");
        linkedQueue.add("Suraj");
        linkedQueue.add("Harsh");
  
        // print elements of queue
        System.out.println("Items in Queue are " + linkedQueue);
  
        // Try to poll elements from linkedQueue
        // using poll(long timeout, TimeUnit unit) method
        System.out.println("Removing item From head: "
                           + linkedQueue.poll(5, TimeUnit.SECONDS));
  
        // print queue details
        System.out.println("Now Queue Contains" + linkedQueue);
  
        // using poll(long timeout, TimeUnit unit) method
        System.out.println("Removing item From head: "
                           + linkedQueue.poll(5, TimeUnit.SECONDS));
  
        // print queue details
        System.out.println("Now Queue Contains" + linkedQueue);
  
        // using poll(long timeout, TimeUnit unit) method
        System.out.println("Removing item From head: "
                           + linkedQueue.poll(5, TimeUnit.SECONDS));
  
        // print queue details
        System.out.println("Now Queue Contains" + linkedQueue);
  
        // using poll(long timeout, TimeUnit unit) method
        System.out.println("Removing item From head: "
                           + linkedQueue.poll(5, TimeUnit.SECONDS));
        // print queue details
        System.out.println("Now Queue Contains" + linkedQueue);
    }
}
Producción:

Items in Queue are [Ravi, Suraj, Harsh]

Removing item From head: Ravi
Now Queue Contains[Suraj, Harsh]

Removing item From head: Suraj
Now Queue Contains[Harsh]

Removing item From head: Harsh
Now Queue Contains[]

Removing item From head: null
Now Queue Contains[]

Referencia:

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 *