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

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

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

介绍

BlockingDeque 接口是 Deque 接口的一个子接口,表示一个具有阻塞功能的双端队列。

BlockingDeque 接口提供了一组方法来在队列尾部插入、移除和检查元素,以及在队列头部插入、移除和检查元素。其中,pollLast() 方法用于从队列的尾部获取并移除一个元素,如果队列为空,则会阻塞等待直到有可用元素。

语法

pollLast() 方法的语法如下:

E pollLast() throws InterruptedException
参数

该方法不接受任何参数。

返回值

如果队列不为空,则返回队列尾部的元素;如果队列为空,则会阻塞等待直到有可用元素,此时返回获取到的元素。如果在等待期间线程被中断,则会抛出 InterruptedException 异常。

示例

下面是一个示例代码,展示了如何使用 BlockingDequepollLast() 方法:

import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;

public class BlockingDequeExample {
    public static void main(String[] args) {
        BlockingDeque<String> deque = new LinkedBlockingDeque<>();

        // 启动一个消费者线程
        new Thread(() -> {
            try {
                String element = deque.pollLast(); // 从队列尾部获取并移除元素
                System.out.println("Consumed: " + element);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();

        // 添加元素到队列尾部
        deque.offer("Element 1");
        deque.offer("Element 2");
        deque.offer("Element 3");

        System.out.println("Elements in deque: " + deque);

        // 等待一段时间,以便消费者线程获取元素
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Elements in deque after consumption: " + deque);
    }
}

运行上述代码,将得到以下输出:

Elements in deque: [Element 1, Element 2, Element 3]
Consumed: Element 3
Elements in deque after consumption: [Element 1, Element 2]

在上面的示例中,我们创建了一个 LinkedBlockingDeque 对象,并向其中添加了三个元素。然后,我们启动一个消费者线程,该线程使用 pollLast() 方法从队列的尾部获取并移除一个元素,并打印出消费的元素。最后,我们打印队列中剩余的元素。注意,在消费者线程启动前添加的元素可能已经被消费了。