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–