📅  最后修改于: 2023-12-03 15:16:20.801000             🧑  作者: Mango
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
的不同实现类可以实现不同具体功能的队列。