BlockingQueue 4组API
BlockingQueue 4组API
会抛异常 | 不抛异常,有返回值 | 阻塞 | 超时阻塞 | |
---|---|---|---|---|
添加 | add | offer | put | offer(,,) |
删除 | remove | poll | take | poll(,) |
查询 | .element() | .peek() | -- | -- |
代码:
package com.example.juc;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;
public class TestQueue {
public static void main(String[] args) throws InterruptedException {
ArrayBlockingQueue queue = new ArrayBlockingQueue<>(3);
// 添加、删除操作会抛异常 add remove element
queue.add("a");
queue.add("b");
queue.add("c");
// queue.add("d"); //IllegalStateException: Queue full
System.out.println(queue.element()); // a 获取当前元素
queue.remove();
System.out.println(queue.element());// b 获取当前元素
queue.remove();
queue.remove();
// queue.remove(); // NoSuchElementException
// 添加、删除操作不会抛异常,有返回值
System.out.println(queue.offer("a")); // true
System.out.println(queue.offer("b")); // true
System.out.println(queue.offer("c")); // true
System.out.println(queue.offer("d")); // false
System.out.println(queue.poll()); // a
System.out.println(queue.poll()); // b
System.out.println(queue.poll()); // c
System.out.println(queue.poll()); // null
System.out.println(queue.peek()); // null
// 添加、删除操作阻塞
queue.put("a");
queue.put("b");
queue.put("c");
// queue.put("d");
System.out.println(queue.take()); // a
System.out.println(queue.take()); // b
System.out.println(queue.take()); // c
// queue.take();
// 添加、删除操作阻塞一段时间
System.out.println(queue.offer("a")); // true
System.out.println(queue.offer("b")); // true
System.out.println(queue.offer("c")); // true
System.out.println(queue.offer("d", 1, TimeUnit.SECONDS)); // false
System.out.println(queue.poll()); // a
System.out.println(queue.poll()); // b
System.out.println(queue.poll()); // c
System.out.println(queue.poll(1, TimeUnit.SECONDS)); // null
}
}