📜  Java中的 BlockingQueue poll() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:16:20.801000             🧑  作者: Mango

Java中的 BlockingQueue poll() 方法及示例

介绍

Java中的BlockingQueue是线程安全的队列,提供了多种阻塞处理方式,如阻塞等待队列非空、阻塞等待队列非满等。

poll()方法是BlockingQueue中的一个非阻塞方法,用于获取并移除队列的头部元素,如果队列中没有元素,则返回null。该方法会立即返回,不会等待直到队列非空。

方法签名
E poll();
示例
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

public class BlockingQueueDemo {
    public static void main(String[] args) {
        BlockingQueue<String> queue = new LinkedBlockingQueue<>(3); // 创建容量为3的队列
        System.out.println(queue.poll()); // 输出null

        queue.offer("A"); // 向队列中添加元素
        queue.offer("B");
        queue.offer("C");

        System.out.println(queue.poll()); // 输出A
        System.out.println(queue.poll()); // 输出B
        System.out.println(queue.poll()); // 输出C
        System.out.println(queue.poll()); // 输出null
    }
}

在上述示例中,通过LinkedBlockingQueue创建了一个容量为3的队列。首先调用poll()方法获取头部元素,因为队列为空,所以返回null。接着向队列中添加3个元素,分别为"A"、"B"、"C"。再次调用poll()方法获取头部元素,返回"A"。依次类推,队列中的元素被一个个取出,最后队列为空,再次调用poll()方法返回null

总结

poll()方法是BlockingQueue中的一个非阻塞方法,用于获取并移除队列的头部元素,如果队列中没有元素,则返回null。如果需要等待队列非空时再获取元素,则可以使用take()方法。如果需要向队列中添加元素,则可以使用offer()方法。通过BlockingQueue的不同实现类可以实现不同具体功能的队列。