-
会抛出异常
public class Test01 {
public static void main(String[] args) {
test();
}
public static void test() {
//队列的大小:3
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("队首是"+blockingQueue.element());//检测队首元素 会抛出异常
System.out.println(blockingQueue.remove());
System.out.println(blockingQueue.remove());
System.out.println(blockingQueue.remove());
/*队列大小只有3
java.util.NoSuchElementException 抛出异常
System.out.println(blockingQueue.remove());*/
}
}
-
有返回值 不会抛出异常
public class Test01 {
public static void main(String[] args) {
test();
}
public static void test() {
//队列的大小:3
ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(3);
System.out.println(blockingQueue.offer("a"));
System.out.println(blockingQueue.offer("b"));
System.out.println(blockingQueue.offer("c"));
// System.out.println(blockingQueue.offer("d")); //false 不抛出异常
System.out.println("队首是"+blockingQueue.peek());//检测队首元素 不会抛出异常
System.out.println(blockingQueue.poll());
System.out.println(blockingQueue.poll());
System.out.println(blockingQueue.poll());
// System.out.println(blockingQueue.poll()); //null 多删除也不抛出异常:
}
}
-
等待 阻塞
public static void main(String[] args) throws InterruptedException {
test();
}
public static void test() throws InterruptedException {
//队列的大小:3
ArrayBlockingQueue<Object> blockingQueue = new ArrayBlockingQueue<>(3);
blockingQueue.put("a");
blockingQueue.put("b");
blockingQueue.put("c");
/*队列没有位置 d 会一值等待
blockingQueue.put("d"); */
System.out.println(blockingQueue.take());
System.out.println(blockingQueue.take());
System.out.println(blockingQueue.take());
/* 没有元素 会一直等待
System.out.println(blockingQueue.take());*/
}
-
超时等待 自动退出
public class Test01 {
public static void main(String[] args) throws InterruptedException {
test();
}
public static void test() throws InterruptedException {
//队列的大小:3
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());
blockingQueue.poll(2,TimeUnit.SECONDS); //等待超过两秒后 就退出
}
}