package com.itjava.interview;
import java.util.ArrayList;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;
/**
- 1 队列
- 2 阻塞队列
-
2.1 阻塞队列有没有好的一面 比如餐厅吃饭 -
2.2 不得不阻塞,如何管理
*/
public class BlockingQueueDemo {
public static void main(String[] args) throws Exception {
ArrayList<String> list = new ArrayList<>();
ArrayBlockingQueue<String> 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.element()); //检查队首元素
//移除
System.out.println(blockingQueue.remove());
System.out.println(blockingQueue.remove());
System.out.println(blockingQueue.remove());*/
/* System.out.println(blockingQueue.offer("a"));
System.out.println(blockingQueue.offer("a"));
System.out.println(blockingQueue.offer("a"));
System.out.println(blockingQueue.offer("x")); //超出,返回Boolean*/
/* 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*/
// blockingQueue.put(“a”);
// blockingQueue.put(“a”);
// blockingQueue.put(“a”);
// System.out.println("==============");
// blockingQueue.put(“x”); //阻塞,
// blockingQueue.take();
// blockingQueue.take();
// blockingQueue.take();
// blockingQueue.take();
System.out.println(blockingQueue.offer("a", 2, TimeUnit.SECONDS));
System.out.println(blockingQueue.offer("a", 2, TimeUnit.SECONDS));
System.out.println(blockingQueue.offer("a", 2, TimeUnit.SECONDS));
System.out.println(blockingQueue.offer("a", 2, TimeUnit.SECONDS)); //阻塞2秒
}
}





本文深入探讨了阻塞队列的概念及其在Java并发编程中的应用。通过具体示例,展示了ArrayBlockingQueue的使用方法,包括offer方法的时间限制特性,帮助读者理解如何在多线程环境中有效管理资源。
188

被折叠的 条评论
为什么被折叠?



