BlockingDeque在Java中的put()方法及其示例
BlockingDeque 中的 put(E e) 方法将指定的元素插入到由此deque表示的队列中(换句话说,在deque的尾部)。如果受限容量,则会等待空间可用。
语法:
public void put(E e)
参数: 此方法接受一个强制性参数 e ,它是要插入到 BlockingDeque 后部的元素。
返回: 此方法不返回任何内容。
异常: 该程序会抛出两个异常,如下所示:
- NullPointerException - 如果指定的元素为null
- InterruptedException - 如果在等待时被中断
注 :在Java中, BlockingDeque 的 put() 方法是从 LinkedBlockingDeque 类继承而来的。
以下程序演示了 BlockingDeque 的put()方法:
程序1:
// Java程序演示BlockingDeque的put()方法
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.BlockingDeque;
import java.util.*;
public class GFG {
public static void main(String[] args)
throws InterruptedException
{
// 创建 BlockingDeque 对象
BlockingDeque<Integer> BD
= new LinkedBlockingDeque<Integer>();
// 在BlockingDeque的末尾添加数字
BD.put(7855642);
BD.put(35658786);
BD.put(5278367);
BD.put(74381793);
// 打印Deque
System.out.println("Blocking Deque: " + BD);
}
}
Blocking Deque: [7855642, 35658786, 5278367, 74381793]
程序2:
// Java程序演示BlockingDeque的put()方法
// 抛出NullPointerException
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.BlockingDeque;
import java.util.*;
public class GFG {
public static void main(String[] args)
throws InterruptedException
{
// 创建 BlockingDeque 对象
BlockingDeque<Integer> BD
= new LinkedBlockingDeque<Integer>();
// 在BlockingDeque的末尾添加数字
BD.put(7855642);
BD.put(35658786);
BD.put(5278367);
// 抛出一个异常
BD.put(null);
// 打印Deque
System.out.println("Blocking Deque: " + BD);
}
}
输出结果:
Exception in thread "main" java.lang.NullPointerException
at java.util.concurrent.LinkedBlockingDeque.putLast(LinkedBlockingDeque.java:390)
at java.util.concurrent.LinkedBlockingDeque.put(LinkedBlockingDeque.java:649)
at GFG.main(GFG.java:24)
程序3:
// Java程序演示BlockingDeque的put()方法
// 当超过容量时
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.BlockingDeque;
import java.util.*;
public class GFG {
public static void main(String[] args)
throws InterruptedException
{
// 创建BlockingDeque对象
BlockingDeque<Integer> BD
= new LinkedBlockingDeque<Integer>(3);
// 将数字添加到BlockingDeque的末尾
BD.put(7855642);
BD.put(35658786);
BD.put(5278367);
// 抛出异常
BD.put(4356789);
// 打印Dequeue
System.out.println("Blocking Deque:" + BD);
}
}
输出 :
由于服务器负载过重或使用了sleep函数,超出了实时限制上限
参考: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingDeque.html#put(E)
极客教程