LinkedBlockingQueue | oferta() Método en JAVA

Hay dos tipos de método de oferta() para la clase LinkedBlockingQueue:

oferta (E e, tiempo de espera prolongado, unidad TimeUnit)

El método de oferta (E e, tiempo de espera largo, unidad de unidad de tiempo) de LinkedBlockingQueue inserta el elemento pasado como parámetro al método al final de esta LinkedBlockingQueue si la cola no está llena. Esperará hasta un tiempo específico para que haya espacio disponible si LinkedBlockingQueue está lleno. El tiempo de espera especificado y la Unidad de tiempo para el tiempo se darán como parámetros para el método offer(). Por lo tanto, esperará hasta ese momento para que LinkedBlockingQueue elimine algunos elementos para que este método pueda agregar elementos a LinkedBlockingQueue.

Sintaxis:

public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException

Parámetros: Este método acepta tres parámetros:

  • e : el elemento que se insertará en LinkedBlockingQueue.
  • tiempo de espera : el tiempo hasta el cual el método de oferta esperará para insertar un nuevo elemento si la cola está llena.
  • unidad : la unidad de tiempo para el parámetro de tiempo de espera.

Valor devuelto: el método devuelve verdadero si la inserción del elemento es exitosa. De lo contrario, devuelve falso si transcurre el tiempo de espera especificado antes de que haya espacio disponible.

Excepción: este método arroja las siguientes excepciones:

  • NullPointerException : si el elemento especificado es nulo.
  • InterruptedException : si se interrumpe durante la espera.

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

Programa 1: Cree LinkedBlockingQueue insertando los nombres de los estudiantes que usan el método de oferta (E e, tiempo de espera largo, unidad de unidad de tiempo) cuyo parámetro de unidad de tiempo se proporciona en segundos y el parámetro de tiempo de espera es 5 segundos.

// Java Program Demonstrate
// offer(Element e, long timeout, TimeUnit unit)
// method of LinkedBlockingQueue.
  
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
  
public class GFG {
  
    // Main method
    public static void main(String[] args)
        throws InterruptedException
    {
        // define capacity of LinkedBlockingQueue
        int capacityOfQueue = 4;
  
        // create object of LinkedBlockingQueue
        LinkedBlockingQueue<Integer>
            linkedQueue = new LinkedBlockingQueue<Integer>(capacityOfQueue);
  
        // Add 5 elements to ArrayBlockingQueue having
        // Timeout in seconds with value 5 secs in
        // offer(Element e, long timeout, TimeUnit unit)
        System.out.println("adding 32673821 "
                           + linkedQueue.offer(32673821,
                                               5,
                                               TimeUnit.SECONDS));
        System.out.println("adding 88527183: "
                           + linkedQueue.offer(88527183,
                                               5,
                                               TimeUnit.SECONDS));
        System.out.println("adding 431278539: "
                           + linkedQueue.offer(431278539,
                                               5,
                                               TimeUnit.SECONDS));
        System.out.println("adding 351278693: "
                           + linkedQueue.offer(351278693,
                                               5,
                                               TimeUnit.SECONDS));
        System.out.println("adding 647264: "
                           + linkedQueue.offer(647264,
                                               5,
                                               TimeUnit.SECONDS));
  
        // print the elements of queue
        System.out.println("list of numbers of queue:"
                           + linkedQueue);
  
        // now queue is full check remaining capacity of queue
        System.out.println("Empty spaces of queue : "
                           + linkedQueue.remainingCapacity());
  
        // try to add more Integer
        boolean response = linkedQueue.offer(2893476,
                                             5,
                                             TimeUnit.SECONDS);
        System.out.println("Adding new Integer 2893476 is successful: "
                           + response);
    }
}
Producción:

adding 32673821 true
adding 88527183: true
adding 431278539: true
adding 351278693: true
adding 647264: false
list of numbers of queue:[32673821, 88527183, 431278539, 351278693]
Empty spaces of queue : 0
Adding new Integer 2893476 is successful: false

Programa 2: Mostrar la excepción lanzada por el método de oferta (Elemento e, tiempo de espera prolongado, unidad de unidad de tiempo)

// Java Program Demonstrate
// offer(Element e, 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<Integer>
            linkedQueue = new LinkedBlockingQueue<Integer>(capacityOfQueue);
  
        // Add elements to ArrayBlockingQueue having
        // Timeout in seconds with value 5 secs in
        // offer(Element e, long timeout, TimeUnit unit)
        System.out.println("Adding 283239 in Queue :"
                           + linkedQueue.offer(283239,
                                               5,
                                               TimeUnit.SECONDS));
  
        // try to put null value in offer method
        try {
  
            System.out.println("Adding null in Queue: "
                               + linkedQueue.offer(null,
                                                   5,
                                                   TimeUnit.SECONDS));
        }
        catch (Exception e) {
  
            // print error details
            System.out.println("Exception: " + e);
        }
  
        // print elements of queue
        System.out.println("Items in Queue are "
                           + linkedQueue);
    }
}
Producción:

Adding 283239 in Queue :true
Exception: java.lang.NullPointerException
Items in Queue are [283239]

oferta(E e)

El método de oferta (E e) de LinkedBlockingQueue inserta el elemento e, pasado como parámetro, al final de esta LinkedBlockingQueue, si la cola tiene espacio, es decir, la cola no está llena. Si la cola está llena, la aplicación del método de oferta() no muestra ningún efecto porque LinkedBlockingQueue bloqueará el elemento que se insertará. El método de oferta() devuelve verdadero cuando la operación de adición a LinkedBlockingQueue es exitosa y falso si esta cola está llena. Este método es preferible al método add() porque el método add arroja un error cuando la cola está llena, pero el método offer() devuelve falso en tal situación.

Sintaxis:

public boolean offer(E e)

Parámetros: este método toma un parámetro obligatorio e que es el elemento que se insertará en LinkedBlockingQueue.

Valor devuelto: este método devuelve verdadero si la inserción del elemento es exitosa. De lo contrario, devuelve falso .

Excepción: el método arroja NullPointerException si el elemento especificado es nulo.

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

Programa 1: Cree LinkedBlockingQueue insertando los nombres de los estudiantes usando el método de oferta().

// Java Program Demonstrate
// offer(Element e)
// method of LinkedBlockingQueue.
  
import java.util.concurrent.LinkedBlockingQueue;
  
public class GFG {
  
    // Main method
    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 using offer
        linkedQueue.offer("dean");
        linkedQueue.offer("kevin");
        linkedQueue.offer("sam");
        linkedQueue.offer("jack");
  
        // print the elements of queue
        System.out.println("list of names of queue:");
        System.out.println(linkedQueue);
    }
}
Producción:

list of names of queue:
[dean, kevin, sam, jack]

Programa 2: Comprobando si LinkedBlockingQueue está lleno, luego inserta un nuevo elemento o no.

// Java Program Demonstrate
// offer(Element e)
// method of LinkedBlockingQueue.
  
import java.util.concurrent.LinkedBlockingQueue;
  
public class GFG {
  
    // Main method
    public static void main(String[] args)
    {
        // define capacity of LinkedBlockingQueue
        int capacityOfQueue = 4;
  
        // create object of LinkedBlockingQueue
        LinkedBlockingQueue<Integer>
            linkedQueue = new LinkedBlockingQueue<Integer>(capacityOfQueue);
  
        // Add element to LinkedBlockingQueue using offer
        linkedQueue.offer(34567);
        linkedQueue.offer(45678);
        linkedQueue.offer(98323);
        linkedQueue.offer(93758);
  
        // print the elements of queue
        System.out.println("list of numbers of queue:");
        System.out.println(linkedQueue);
  
        // now queue is full check remaining capacity of queue
        System.out.println("Empty spaces of queue : "
                           + linkedQueue.remainingCapacity());
  
        // try to add extra Integer
        boolean response = linkedQueue.offer(2893476);
  
        System.out.println("Adding new Integer 2893476 is successful: "
                           + response);
  
        response = linkedQueue.offer(456751);
  
        System.out.println("Adding new Integer 456751 is successful: "
                           + response);
    }
}
Producción:

list of numbers of queue:
[34567, 45678, 98323, 93758]
Empty spaces of queue : 0
Adding new Integer 2893476 is successful: false
Adding new Integer 456751 is successful: false

Programa 3: Mostrar excepción lanzada por el método de oferta()

// Java Program Demonstrate offer(E e)
// method of LinkedBlockingQueue
  
import java.util.concurrent.LinkedBlockingQueue;
  
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 using offer() method
        linkedQueue.offer("Karan");
  
        // try to put null value in offer method
        try {
            linkedQueue.offer(null);
        }
        catch (Exception e) {
            // print error details
            System.out.println("Exception: " + e);
        }
  
        // print elements of queue
        System.out.println("Items in Queue are "
                           + linkedQueue);
    }
}
Producción:

Exception: java.lang.NullPointerException
Items in Queue are [Karan]

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 *