PriorityBlockingQueue take() method in Java

Last Updated : 11 Jul, 2025
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
// 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);
    }
}
Output:
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
// 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);
    }
}
Output:
[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--
Comment