Java中的 PriorityBlockingQueue offer() 方法
1. offer(E e) 方法
PriorityBlockingQueue 的offer(E e)方法将作为参数传递的元素 e插入到此 PriorityBlockingQueue 中。此方法将元素插入到此 PriorityBlockingQueue 中。由于 PriorityBlockingQueue 是无界的,所以这个方法永远不会被阻塞。
句法:
public boolean offer(E e)
范围:
此方法接受一个参数e ,它表示我们要在此 PriorityBlockingQueue 中插入的元素 e。
回报:
如果插入成功,此方法返回布尔响应 true。
异常:此方法引发以下异常。
- ClassCastException – 如果指定的元素不能与根据 PriorityBlockingQueue 的排序当前在优先级队列中的元素进行比较。
NullPointerException – 如果元素为空
下面的程序说明了 PriorityBlockingQueue 的 offer() 方法:
示例 1:演示 PriorityBlockingQueue 上的 offer() 方法以添加数字列表的程序。
// Java Program Demonstrate offer()
// method of PriorityBlockingQueue
import java.util.concurrent.PriorityBlockingQueue;
public class GFG {
public static void main(String[] args)
{
// define capacity of PriorityBlockingQueue
int capacityOfQueue = 5;
// create object of PriorityBlockingQueue
PriorityBlockingQueue PrioQueue
= new PriorityBlockingQueue(capacityOfQueue);
// Add numbers to PriorityBlockingQueue using offer()
PrioQueue.offer(35658786);
PrioQueue.offer(5278367);
PrioQueue.offer(74381793);
PrioQueue.offer(87625142);
// print elements of PriorityBlockingQueue
System.out.println("Queue Contains:");
System.out.println(PrioQueue.toString());
}
}
Queue Contains:
[5278367, 35658786, 74381793, 87625142]
示例 2:当我们尝试将 null 添加到 PriorityBlockingQueue 时,演示由 offer() 方法引发的异常的程序。
// Java Program Demonstrate offer()
// method of PriorityBlockingQueue
import java.util.concurrent.PriorityBlockingQueue;
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// define capacity of PriorityBlockingQueue
int capacityOfQueue = 5;
// create object of PriorityBlockingQueue which contains
// name of students
PriorityBlockingQueue names
= new PriorityBlockingQueue(capacityOfQueue);
// Add names of students of girls college
names.offer("Joyita");
names.offer("Priyanka");
// try to insert null value in offer method
try {
names.offer(null);
}
catch (Exception e) {
// print error details
System.out.println("Exception Thrown: " + e);
}
}
}
Exception Thrown: java.lang.NullPointerException
2. offer(E e, long timeout, TimeUnit unit) 方法
PriorityBlockingQueue 的offer(E e, long timeout, TimeUnit unit)方法将作为参数传递的元素 e插入到此 PriorityBlockingQueue 中。此方法将元素插入到此 PriorityBlockingQueue 中。由于 PriorityBlockingQueue 是无界的,所以这个方法永远不会被阻塞,并且忽略 timeout 和 timeUnit 参数。这个方法是从优先BlockingQueue 的超类继承的,它是 BlockingQueue 类但是由于priorityBlockingQueue 从不阻塞要插入的新元素,所以这个方法继承自超类在逻辑上与 offer(E e) 方法相同。
句法:
offer(E e, long timeout, TimeUnit unit)
参数:该方法接受三个参数
- e : 要插入 PriorityBlockingQueue 的元素。
- timeout :这个参数被忽略,因为队列从不阻塞新元素的插入。
- unit :这个参数也被忽略了,因为 queue 永远不会阻塞新元素的插入。
返回:如果插入成功,此方法返回布尔响应 true。
异常:此方法引发以下异常。
- ClassCastException – 如果指定的元素不能与根据 PriorityBlockingQueue 的排序当前在优先级队列中的元素进行比较。
NullPointerException – 如果元素为空
下面的程序说明了 PriorityBlockingQueue 的 offer(E e, long timeout, TimeUnit unit) 方法:
示例 1:演示 PriorityBlockingQueue 上的 offer(E e, long timeout, TimeUnit unit) 方法添加数字列表的程序。
// Java Program Demonstrate offer()
// method of PriorityBlockingQueue
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.TimeUnit;
public class GFG {
public static void main(String[] args)
{
// define capacity of PriorityBlockingQueue
int capacityOfQueue = 5;
// create object of PriorityBlockingQueue
PriorityBlockingQueue PrioQueue
= new PriorityBlockingQueue(capacityOfQueue);
// Add 3 elements to PriorityBlockingQueue using
// offer(Element e, long timeout, TimeUnit unit)
System.out.println("adding 1234 "
+ PrioQueue.offer(1234,
5, TimeUnit.SECONDS));
System.out.println("adding 2345 "
+ PrioQueue.offer(2345,
5, TimeUnit.SECONDS));
System.out.println("adding 3456 "
+ PrioQueue.offer(3456,
5, TimeUnit.SECONDS));
// print elements of PriorityBlockingQueue
System.out.println("Queue Contains:");
System.out.println(PrioQueue.toString());
}
}
adding 1234 true
adding 2345 true
adding 3456 true
Queue Contains:
[1234, 2345, 3456]
参考:
- https://docs.oracle.com/javase/8/docs/api/java Java
- https://docs.oracle.com/javase/8/docs/api/java Java