Java PriorityBlockingQueue take()方法

Java PriorityBlockingQueue take()方法

PriorityBlockingQueuetake() 方法在移除队列后返回队列的头部。如果队列是空的,那么这个方法将等待,直到一个元素变得可用。

语法

public E take() throws InterruptedException

返回: 该方法返回该PriorityBlockingQueue的头部的值。

异常: 该方法抛出InterruptedException,如果在等待一个元素变得可用时被打断。

下面的程序说明了PriorityBlockingQueue的take()方法。

例1: 演示PriorityBlockingQueue的take()方法,其中包含一个数字列表。

// 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]

例子2: 演示PriorityBlockingQueue上的take()方法,该方法包含字符串

// 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]

参考资料: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html#take-

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程