📅  最后修改于: 2023-12-03 15:31:55.112000             🧑  作者: Mango
Java中的PriorityBlockingQueue是一个基于优先级的无边界阻塞队列,它采用了数组实现,对元素的优先级进行排序。在PriorityBlockingQueue中,每个元素必须实现了Comparable接口,遵循自然排序或者定义的排序规则。
poll()
是PriorityBlockingQueue中的一个方法,用来获取并移除队列中的头元素。该方法的具体介绍如下:
public E poll()
返回队列中的头元素(即优先级最高的元素),如果队列为空,返回null。
poll()
方法将会立即返回null。如果需要等待队列中有元素后再进行操作,则可以使用 take()
方法,它将会阻塞当前线程,直到队列非空为止。poll()
方法将会返回优先级最高的元素。在PriorityBlockingQueue中,优先级最高的元素是第一个元素。如果PriorityBlockingQueue中的元素是无序的,则 poll()
方法并不能保证返回最小或者最大的元素。poll()
方法将会移除获取到的头元素。如果需要获取头元素但不想移除它,则可以使用 peek()
方法。PriorityBlockingQueue<Integer> priorityQueue = new PriorityBlockingQueue<>();
priorityQueue.offer(1);
priorityQueue.offer(5);
priorityQueue.offer(2);
priorityQueue.offer(7);
System.out.println(priorityQueue.poll()); //1
System.out.println(priorityQueue.poll()); //2
System.out.println(priorityQueue.poll()); //5
System.out.println(priorityQueue.poll()); //7
System.out.println(priorityQueue.poll()); //null
以上示例中,优先级队列中的元素是无序的。poll()
方法按照优先级排序,所以最终输出的结果是1,2,5,7,null。当队列中没有元素的时候,poll()
方法将会返回null。
poll()
方法是PriorityBlockingQueue中的一个重要方法,它用于获取并移除队列中的头元素。在PriorityBlockingQueue中,poll()
方法将会返回优先级最高的元素。如果队列为空,poll()
方法将会立即返回null。如果需要等待队列中非空后再进行操作,则可以使用 take()
方法,它将会阻塞当前线程,直到队列非空为止。如果需要获取头元素但不想移除它,则可以使用 peek()
方法。