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–