📅  最后修改于: 2023-12-03 14:42:44.682000             🧑  作者: Mango
在 Java 中,BlockingDeque 接口提供了一个 putLast() 方法来在队列的最后插入元素。这个方法只有在队列未满时才会插入元素,否则会阻塞等待队列有足够的空间。BlockingDeque 是一个双端阻塞队列,可以在队列的两端插入和删除元素。
void putLast(E e) throws InterruptedException
方法参数:
抛出异常:
下面是一个使用 putLast() 函数的示例:
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
public class BlockingDequeExample {
public static void main(String[] args) {
BlockingDeque<String> deque = new LinkedBlockingDeque<>(3);
try {
deque.putLast("Java");
System.out.println("插入元素:Java");
deque.putLast("Python");
System.out.println("插入元素:Python");
deque.putLast("C++");
System.out.println("插入元素:C++");
deque.putLast("C#");
System.out.println("插入元素:C#"); // 不会执行到这里
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
输出结果:
插入元素:Java
插入元素:Python
插入元素:C++
在这个示例中,我们创建了一个容量为 3 的阻塞双端队列,并向队列中插入了 3 个值,然后尝试在队列已满的情况下插入第四个值。由于队列已满,putLast() 函数会阻塞线程,直到队列中有空闲位置为止。如果我们打开注释,将第四个元素插入到队列中,程序会一直阻塞等待队列中有足够的空间。