
image.png
//方式一
@Test
public void test1() {
ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(3);
System.out.println(blockingQueue.add("a"));
System.out.println(blockingQueue.add("b"));
System.out.println(blockingQueue.add("c"));
// java.lang.IllegalStateException 添加超过三个就会显示异常
// System.out.println(blockingQueue.add("d"));
System.out.println("========================");
// 检测队首元素
System.out.println(blockingQueue.element());
System.out.println(blockingQueue.remove());
System.out.println(blockingQueue.remove());
System.out.println(blockingQueue.remove());
// java.util.NoSuchElementException 获取没有的也会有异常
// System.out.println(blockingQueue.remove());
}
// 方式二
@Test
public void test2() {
ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(3);
System.out.println(blockingQueue.offer("a"));
System.out.println(blockingQueue.offer("b"));
System.out.println(blockingQueue.offer("c"));
// 不抛出异常直接返回fasle
System.out.println(blockingQueue.offer("d"));
System.out.println("========================");
// 检测队首元素
System.out.println(blockingQueue.peek());
System.out.println(blockingQueue.poll());
System.out.println(blockingQueue.poll());
System.out.println(blockingQueue.poll());
// 没有会返回null
System.out.println(blockingQueue.poll());
}
// 方式三
@Test
public void test3() throws Exception{
ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(3);
blockingQueue.put("a");
blockingQueue.put("B");
blockingQueue.put("C");
// 如果有多余的就会一直堵塞
// blockingQueue.put("D");
System.out.println(blockingQueue.take());
System.out.println(blockingQueue.take());
System.out.println(blockingQueue.take());
// 如果有多余的就会一直堵塞
// System.out.println(blockingQueue.take());
}
// 方式死延迟
@Test
public void test4() throws Exception{
ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(3);
blockingQueue.offer("a");
blockingQueue.offer("B");
blockingQueue.offer("C");
// 如果有多余就会在多少秒之后执行
blockingQueue.offer("D",2, TimeUnit.SECONDS);
System.out.println(blockingQueue.poll());
System.out.println(blockingQueue.poll());
System.out.println(blockingQueue.poll());
// 如果有多余的就会一直堵塞
System.out.println(blockingQueue.poll(2,TimeUnit.SECONDS));
}