1.报价(E)方法
这个 报价(E) 方法 优先阻塞队列 插入元素e ,在此PriorityBlockingQueue中作为参数传递。此方法将元素插入此PriorityBlockingQueue。由于PriorityBlockingQueue是无界的,因此永远不会阻止此方法。
语法:
public boolean offer(E e)
参数: 此方法接受一个参数 E 它表示我们要插入到PriorityBlockingQueue中的元素e。
返回: 如果插入成功,此方法将返回布尔响应true。
例外情况: 此方法引发以下异常。
- 类别例外 –如果指定的元素无法根据PriorityBlockingQueue的顺序与优先级队列中当前的元素进行比较。
-
空指针异常 –如果元素为空
下面的程序演示了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<Integer> PrioQueue = new PriorityBlockingQueue<Integer>(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<String> names = new PriorityBlockingQueue<String>(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.提供(E、长超时、时间单位)方法
这个 报价(E、长超时、时间单位) 方法 优先阻塞队列 插入元素e ,在此PriorityBlockingQueue中作为参数传递。此方法将元素插入此PriorityBlockingQueue。由于PriorityBlockingQueue是无界的,因此该方法将永远不会被阻止,超时和时间单位参数将被忽略。此方法继承自priorityBlockingQueue的Supercals,priorityBlockingQueue是BlockingQueue类,但由于priorityBlockingQueue从不阻止要插入的新元素,因此从super类继承的此方法在逻辑上与offer(E)方法相同。
语法:
offer(E e, long timeout, TimeUnit unit)
参数: 此方法接受三个参数
- E :要插入PriorityBlockingQueue的元素。
- 暂停 :此参数被忽略,因为队列从不阻止新元素插入。
- 单元 :此参数也被忽略,因为队列从不阻止新元素插入。
返回: 如果插入成功,此方法将返回布尔响应true。
例外情况: 此方法引发以下异常。
- 类别例外 –如果指定的元素无法根据PriorityBlockingQueue的顺序与优先级队列中当前的元素进行比较。
-
空指针异常 –如果元素为空
下面的程序说明了优先阻塞队列的提供(E、长超时、时间单位)方法:
例1: 程序演示PriorityBlockingQueue上的offer(E,long timeout,TimeUnit)方法,以添加数字列表。
// 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<Integer> PrioQueue = new PriorityBlockingQueue<Integer>(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/util/concurrent/PriorityBlockingQueue.html#offer-E-
- https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html#offer-E-long-java。util。同时发生的时间单位-