PriorityBlockingQueue take() method in Java

The take() method of PriorityBlockingQueue returns head of the queue after removing it. If queue is empty, then this method will wait until an element becomes available.
Syntax:
public E take() throws InterruptedException
Returns: This method returns value at the head of this PriorityBlockingQueue.
Exception: This method throws InterruptedException, if interrupted while waiting for an element to become available.
Below programs illustrate take() method of PriorityBlockingQueue:
Example 1: To demonstrate take() method on PriorityBlockingQueue which contains a list of numbers.
// Java Program Demonstrate take()// method of PriorityBlockingQueue  import java.util.concurrent.PriorityBlockingQueue;import java.util.*;  public class GFG {    public static void main(String[] args)        throws InterruptedException    {          // create object of PriorityBlockingQueue        PriorityBlockingQueue<Integer> PrioQueue            = new PriorityBlockingQueue<Integer>();          // Add numbers to PriorityBlockingQueue        PrioQueue.put(7855642);        PrioQueue.put(35658786);        PrioQueue.put(5278367);        PrioQueue.put(74381793);          // before removing print queue        System.out.println("Queue: " + PrioQueue);          // Apply take() method        int head = PrioQueue.take();          // Print head of queue using take() method        System.out.println("Head of PriorityBlockingQueue"                           + " using take(): " + head);          System.out.print("After removing head, Queue: "                         + PrioQueue);    }} |
Queue: [5278367, 35658786, 7855642, 74381793] Head of PriorityBlockingQueue using take(): 5278367 After removing head, Queue: [7855642, 35658786, 74381793]
Example 2: To demonstrate take() method on PriorityBlockingQueue which contains String
// Java Program Demonstrate take()// method of PriorityBlockingQueue  import java.util.concurrent.PriorityBlockingQueue;import java.util.*;  public class GFG {    public static void main(String[] args)        throws InterruptedException    {          // create object of PriorityBlockingQueue        // which contains Strings        PriorityBlockingQueue<String> names            = new PriorityBlockingQueue<String>();          // Add string        names.add("Geeks");        names.add("forGeeks");        names.add("A computer portal");          // print list of names        System.out.println(names);          // Apply take() method        String head = names.take();          // Print head of queue using take() method        System.out.println("Head of Queue: "                           + head);        System.out.print("After removing head, Queue: "                         + names);    }} |
[A computer portal, forGeeks, Geeks] Head of Queue: A computer portal After removing head, Queue: [Geeks, forGeeks]
Reference: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html#take–



