package unit5;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;
public class Java51 {
public static void main(String[] args) throws InterruptedException {
// BlockingQueue阻塞队列
// // 第1组:抛出异常:add/remove
// ArrayBlockingQueue blockingQueue = new ArrayBlockingQueue(3);// 队列大小
// System.out.println(blockingQueue.add("a"));
// System.out.println(blockingQueue.add("b"));
// System.out.println(blockingQueue.add("c"));
// // System.out.println(blockingQueue.add("d")); // java.lang.IllegalStateException
// System.out.println(blockingQueue.remove());
// System.out.println(blockingQueue.remove());
// System.out.println(blockingQueue.remove());
// // System.out.println(blockingQueue.remove()); // java.util.NoSuchElementException
// // 第2组:有返回值没有异常:offer/poll
// ArrayBlockingQueue 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.poll());
// System.out.println(blockingQueue.poll());
// System.out.println(blockingQueue.poll());
// // System.out.println(blockingQueue.poll()); // null
// // 第3组:等待阻塞一直阻塞:put/take
// ArrayBlockingQueue 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()); // 没有这个元素、一直阻塞
// 第4组:等待阻塞等待超时:offer/poll
ArrayBlockingQueue 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", 3, TimeUnit.SECONDS)); // 等待超过3秒就退出
System.out.println(blockingQueue.poll());
System.out.println(blockingQueue.poll());
System.out.println(blockingQueue.poll());
// System.out.println(blockingQueue.poll(3, TimeUnit.SECONDS)); // 等待超过3秒就退出
}
}