El método put(E e) de la interfaz BlockingQueue inserta el elemento pasado como parámetro al método al final de esta BlockingQueue, si la cola no está llena. Si la cola está llena, este método esperará a que haya espacio disponible y, una vez que haya espacio disponible, insertará el elemento en BlockingQueue.
Sintaxis:
public void put(E e) throws InterruptedException
Parámetro: este método toma un parámetro obligatorio e que es el elemento que se insertará en LinkedBlockingQueue.
Valor devuelto: el método no devuelve nada.
Excepción: este método arroja las siguientes excepciones:
- InterruptedException : cuando se produjo una interrupción en el momento de esperar a que la cola estuviera disponible
- NullPointerException : si el elemento pasado al método es nulo
Nota : El método put() de BlockingQueue se ha heredado de la clase Queue en Java.
Los siguientes programas ilustran el método put(E e) de la clase BlockingQueue:
Programa 1:
Java
// Java Program Demonstrate put(E e) // method of BlockingQueue import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.BlockingQueue; public class GFG { public static void main(String[] args) throws InterruptedException { // define capacity of BlockingQueue int capacityOfQueue = 4; // create object of BlockingQueue BlockingQueue<String> BQ = new LinkedBlockingQueue<String>(capacityOfQueue); // Add element using put() method BQ.put("Karan"); BQ.put("Suraj"); BQ.put("Harsh"); BQ.put("Rahul"); // print elements of queue System.out.println("Items in Queue are " + BQ); } }
Items in Queue are [Karan, Suraj, Harsh, Rahul]
Programa 2:
Java
// Java Program Demonstrate put() // method of BlockingQueue import java.util.Iterator; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.BlockingQueue; public class GFG { public void PutDemo() throws InterruptedException { // define capacity of BlockingQueue int capacityOfQueue = 5; // create object of BlockingQueue BlockingQueue<Employee> BQ = new LinkedBlockingQueue<Employee>(capacityOfQueue); // Add element to BlockingQueue Employee emp1 = new Employee("Ranjeet", "Tester", "29000", 27); Employee emp2 = new Employee("Sanjeet", "Manager", "98000", 34); Employee emp3 = new Employee("Karan", "Analyst", "44000", 30); // Add Employee Objects to BQ // Using put(E e) BQ.put(emp1); BQ.put(emp2); BQ.put(emp3); System.out.println("Details of Employees:"); // print details of BQ Iterator itr = BQ.iterator(); while (itr.hasNext()) System.out.println(itr.next()); } // create an Employee Object with name, // position, salary and age as attributes public class Employee { public String name; public String position; public String salary; public int Age; Employee(String name, String position, String salary, int age) { this.name = name; this.position = position; this.salary = salary; this.Age = age; } @Override public String toString() { return "Employee [name=" + name + ", position=" + position + ", salary=" + salary + ", Age=" + Age + "]"; } } // Main Method public static void main(String[] args) { GFG gfg = new GFG(); try { gfg.PutDemo(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Details of Employees: Employee [name=Ranjeet, position=Tester, salary=29000, Age=27] Employee [name=Sanjeet, position=Manager, salary=98000, Age=34] Employee [name=Karan, position=Analyst, salary=44000, Age=30]
Programa 3:
Java
// Java Program Demonstrate put(E e) // method of BlockingQueue import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.BlockingQueue; public class GFG { public static void main(String[] args) throws InterruptedException { // define capacity of BlockingQueue int capacityOfQueue = 4; // create object of BlockingQueue BlockingQueue<String> BQ = new LinkedBlockingQueue<String>(capacityOfQueue); // try to put null value in put method try { BQ.put(null); } catch (Exception e) { // print error details System.out.println("Exception: " + e); } } }
Exception: java.lang.NullPointerException
Referencia: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html#put(E)