El método add(E e) de la interfaz BlockingQueue inserta el elemento pasado en el parámetro al final de la cola si hay espacio. Si la capacidad de BlockingQueue os está restringida y no queda espacio para la inserción, devuelve una IllegalStateException .
Sintaxis:
public void add(E e)
Parámetros: este método acepta un parámetro obligatorio e que es el elemento que se insertará al final de BlockingQueue.
Devoluciones: este método devuelve verdadero en la inserción exitosa.
Excepción:
- IllegalStateException : si el elemento no se puede agregar en este momento debido a restricciones de capacidad
- NullPointerException : si el elemento especificado es nulo
Nota : El método add() de BlockingQueue se ha heredado de la clase Queue en Java.
Los siguientes programas ilustran el método add() de BlockingQueue:
Programa 1:
Java
// Java Program Demonstrate add() // method of BlockingQueue import java.util.*; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingDeque; public class GFG { public static void main(String[] args) throws IllegalStateException { // create object of BlockingQueue BlockingQueue<Integer> BQ = new LinkedBlockingDeque<Integer>(); // Add numbers to the BlockingQueue BQ.add(7855642); BQ.add(35658786); BQ.add(5278367); BQ.add(74381793); // before removing print BlockingQueue System.out.println("Blocking Queue: " + BQ); } }
Blocking Queue: [7855642, 35658786, 5278367, 74381793]
Programa 2:
Java
// Java Program Demonstrate add() // method of LinkedBlockingDeque // when null is inserted import java.util.*; import java.util.concurrent.LinkedBlockingDeque; public class GFG { public static void main(String[] args) throws IllegalStateException { // create object of LinkedBlockingDeque LinkedBlockingDeque<Integer> BQ = new LinkedBlockingDeque<Integer>(); // Add numbers to end of LinkedBlockingDeque BQ.add(7855642); BQ.add(35658786); BQ.add(5278367); // NULL BQ.add(null); // before removing print Deque System.out.println("Linked Blocking Deque: " + BQ); } }
Producción:
Exception in thread "main" java.lang.IllegalStateException: Deque full at java.util.concurrent.LinkedBlockingDeque.addLast(LinkedBlockingDeque.java:335) at java.util.concurrent.LinkedBlockingDeque.add(LinkedBlockingDeque.java:633) at GFG.main(GFG.java:25)
Referencia: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html#add(E)