Java中BlockingDeque的addFirst()方法——附例子
addFirst(E e) 是 BlockingDeque 中的方法,如果有空间的话,它将传入的元素插入到Deque的前面。如果BlockingDeque的容量受限且没有插入的空间,它将返回一个IllegalStateException。
语法:
public void addFirst(E e)
参数: 此方法接受一个必需的参数 e ,即要插入到BlockingDeque前面的元素。
返回值: 此方法不返回任何内容。
异常:
- IllegalStateException :如果由于容量限制而此时无法添加元素
- NullPointerException :如果指定的元素为null
注意: BlockingDeque中的addFirst()方法继承自Java中的LinkedBlockingDeque类。
下面的程序演示了BlockingQueue的addFirst()方法:
程序1:
// Java程序演示BlockingDeque的addFirst()方法
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.BlockingDeque;
import java.util.*;
public class GFG {
public static void main(String[] args)
throws IllegalStateException
{
// 创建BlockingDeque对象
BlockingDeque<Integer> BD
= new LinkedBlockingDeque<Integer>();
// 将数字添加到BlockingDeque的前面
BD.addFirst(7855642);
BD.addFirst(35658786);
BD.addFirst(5278367);
BD.addFirst(74381793);
// 在删除前打印Deque
System.out.println("Blocking Deque: " + BD);
}
}
Blocking Deque: [74381793, 5278367, 35658786, 7855642]
程序2:
// Java程序演示BlockingDeque的addFirst()方法
// 当它已满时
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.BlockingDeque;
import java.util.*;
public class GFG {
public static void main(String[] args)
throws IllegalStateException
{
// 创建BlockingDeque对象
// 列表的大小
BlockingDeque<Integer> BD
= new LinkedBlockingDeque<Integer>(3);
// 将数字添加到BlockingDeque的前面
BD.addFirst(7855642);
BD.addFirst(35658786);
BD.addFirst(5278367);
// 它已满
BD.addFirst(74381793);
// 在删除前打印Deque
System.out.println("Blocking Deque: " + BD);
}
}
输出:
Exception in thread "main" java.lang.IllegalStateException: Deque full
at java.util.concurrent.LinkedBlockingDeque.addFirst(LinkedBlockingDeque.java:326)
at GFG.main(GFG.java:24)
程序3:
// Java程序展示BlockingDeque的addFirst()方法
// 当插入nill时
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.*;
public class GFG {
public static void main(String[] args)
throws IllegalStateException
{
// 创建BlockingDeque对象
BlockingDeque<Integer> BD
= new LinkedBlockingDeque<Integer>();
// 在BlockingDeque前面添加数字
BD.addFirst(7855642);
BD.addFirst(35658786);
BD.addFirst(5278367);
// NULL
BD.addFirst(null);
// 在删除前打印输出Deque
System.out.println("Blocking Deque: " + BD);
}
}
输出结果:
Exception in thread "main" java.lang.NullPointerException
at java.util.concurrent.LinkedBlockingDeque.offerFirst(LinkedBlockingDeque.java:342)
at java.util.concurrent.LinkedBlockingDeque.addFirst(LinkedBlockingDeque.java:325)
at GFG.main(GFG.java:24)
参考资料: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingDeque.html#addFirst(E)
极客教程