📌  相关文章
📜  Java中的 BlockingDeque offerFirst() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:44.635000             🧑  作者: Mango

Java中的BlockingDeque offerFirst()方法及示例

1. 什么是BlockingDeque?

BlockingDeque是一种阻塞式双向队列,它是一个接口,继承自java.util.concurrent.BlockingQueue接口,提供了一些双向操作的方法。

BlockingDeque可以在队列头和队列尾同时进行操作(插入、删除等)。

2. offerFirst()方法的作用

offerFirst()方法用于向队列头部插入元素,如果队列已满,则等待直到队列有空闲空间。

语法:boolean offerFirst(E e)

返回值:如果插入成功则返回true,如果队列已满则返回false。

3. 代码示例
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;

public class BlockingDequeExample {
    public static void main(String[] args) {
        // 创建一个容量为3的阻塞式双向队列
        BlockingDeque<String> blockingDeque = new LinkedBlockingDeque<>(3);

        // 插入元素到队列头部
        blockingDeque.offerFirst("A");
        blockingDeque.offerFirst("B");
        blockingDeque.offerFirst("C");

        // 队列已满,继续插入元素到头部,将会被阻塞
        blockingDeque.offerFirst("D");

        // 输出队列中的元素
        while (!blockingDeque.isEmpty()) {
            System.out.print(blockingDeque.pollLast() + " ");
        }
    }
}

运行结果:

C B A

在代码示例中,我们创建了一个容量为3的阻塞式双向队列,然后向队列头部插入了3个元素(A、B、C),当我们继续尝试向队列头部插入元素D时,由于队列已满,我们的线程会被阻塞,直到队列中有元素被取出,空出了队列空间。

最后我们使用pollLast()方法将队列中的元素依次取出并输出。