Java中的PriorityBlockingQueue take()方法
PriorityBlockingQueue 的 take() 方法移除队列头并返回其值。如果队列为空,则此方法将等待直至有元素可用。
语法:
public E take() throws InterruptedException
返回值: 此方法返回PriorityBlockingQueue的头部值。
异常: 如果等待一个元素可用时被中断,则此方法抛出InterruptedException异常。
以下程序说明PriorityBlockingQueue的take()方法:
示例1: 演示包含数字列表的PriorityBlockingQueue上的take()方法。
// Java程序演示PriorityBlockingQueue的take()方法
import java.util.concurrent.PriorityBlockingQueue;
import java.util.*;
public class GFG {
public static void main(String[] args)
throws InterruptedException
{
// 创建PriorityBlockingQueue对象
PriorityBlockingQueue<Integer> PrioQueue
= new PriorityBlockingQueue<Integer>();
// 添加数字到PriorityBlockingQueue
PrioQueue.put(7855642);
PrioQueue.put(35658786);
PrioQueue.put(5278367);
PrioQueue.put(74381793);
// 移除前打印队列
System.out.println("Queue: " + PrioQueue);
// 应用take()方法
int head = PrioQueue.take();
// 用take()方法打印队列头
System.out.println("Head of PriorityBlockingQueue"
+ " using take(): " + head);
System.out.print("After removing head, Queue: "
+ PrioQueue);
}
}
队列:[5278367, 35658786, 7855642, 74381793]
使用take()的PriorityBlockingQueue头:5278367
移除头部后,队列:[7855642, 35658786, 74381793]
示例2: 演示PriorityBlockingQueue上包含字符串的take()方法。
// Java程序演示PriorityBlockingQueue的take()方法
import java.util.concurrent.PriorityBlockingQueue;
import java.util.*;
public class GFG {
public static void main(String[] args)
throws InterruptedException
{
// 创建PriorityBlockingQueue对象
// 包含字符串
PriorityBlockingQueue<String> names
= new PriorityBlockingQueue<String>();
// 添加字符串
names.add("Geeks");
names.add("forGeeks");
names.add("A computer portal");
// 打印字符串列表
System.out.println(names);
// 应用take()方法
String head = names.take();
// 用take()方法打印队列头
System.out.println("Queue head: "
+ head);
System.out.print("After removing head, Queue: "
+ names);
}
}
[A computer portal, forGeeks, Geeks]
队列头:A computer portal
移除队列头后,队列:[Geeks, forGeeks]
参考代码: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html#take–
极客教程