《架构风清扬-Java面试系列第25讲》聊聊ArrayBlockingQueue的特点及使用场景

news/2024/9/23 23:26:28/

ArrayBlockingQueue是BlockingQueue接口的一个实现类之一

这个属于基础性问题,老规矩,我们将从使用场景和代码示例来进行讲解

来,思考片刻,给出你的答案


1,使用场景

  1. 实现:基于数组实现的有界阻塞队列,构造时需要指定容量大小,无法动态扩容。
  2. 场景:适用于固定大小的生产者-消费者模型,特别适合内存有限并且需要防止队列无限增长的场景。

2,来,上代码

java">import java.util.concurrent.ArrayBlockingQueue;public class ArrayBlockingQueueExample {static final int QUEUE_CAPACITY = 10;static final BlockingQueue<String> queue = new ArrayBlockingQueue<>(QUEUE_CAPACITY);public static void main(String[] args) throws InterruptedException {Thread producer = new Thread(() -> {try {for (int i = 0; i < 20; i++) {String item = "Item " + i;queue.put(item); // 如果队列满了,生产者会被阻塞System.out.println("Produced: " + item);}} catch (InterruptedException e) {e.printStackTrace();}});Thread consumer = new Thread(() -> {try {while (true) {String item = queue.take(); // 如果队列空了,消费者会被阻塞System.out.println("Consumed: " + item);}} catch (InterruptedException e) {e.printStackTrace();}});producer.start();consumer.start();// 等待producer完成producer.join();// 然后中断消费者consumer.interrupt();}
}

想提高面试准备效率!欢迎来加入我的星球!承诺三天内不满意,直接免费退出!


http://www.ppmy.cn/news/1441002.html

相关文章

spark实验求TOP值

实验1&#xff1a;求TOP值 已知存在两个文本文件&#xff0c;file1.txt和file2.txt&#xff0c;内容分别如下&#xff1a; file1.txt 1,1768,50,155 2,1218, 600,211 3,2239,788,242 4,3101,28,599 5,4899,290,129 6,3110,54,1201 7,4436,259,877 8,2369,7890,27 fil…

通义灵码-IDEA的使用教程

通义灵码-IDEA的使用教程 1、通义灵码是什么&#xff1f; 通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力&#…

Python_AI库 matplotlib扩展知识

Python_AI库 matplotlib扩展知识 在数据分析和处理的领域里&#xff0c;可视化是一种不可或缺的手段。通过图形化的展示&#xff0c;我们可以更直观地理解数据的分布、趋势和关系。而matplotlib&#xff0c;作为Python中最为流行的数据可视化库之一&#xff0c;以其强大的功能…

C# Solidworks二次开发:枚举应用实战(第五讲)

大家好&#xff0c;今天是我们枚举应用的第五讲。 下面是今天要介绍的枚举&#xff1a; &#xff08;1&#xff09;第一个枚举为swConStraintType_e&#xff0c;这个枚举为草图约束&#xff0c;下面是官方的具体枚举值&#xff1a; MemberDescriptionswConstraintType_ALONG…

mongodb替代品SequoiaDB的安装使用

前言 1、为什么不直接使用mongodb啊&#xff1f; 答&#xff1a;mongodb的使用协议是SSPL&#xff0c;一旦使用需要将你服务器程序都开源处理–或者给钱。非常不好&#xff0c;而SequoiaDB号称能够兼容mongodb协议&#xff0c;这次来安装试试。 mongodb - SSPL&#xff0c;Seq…

web server apache tomcat11-24-Virtual Hosting and Tomcat

前言 整理这个官方翻译的系列&#xff0c;原因是网上大部分的 tomcat 版本比较旧&#xff0c;此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎&#xff0c;轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…

JSP在页面用<%=调用声明函数时出现HTTP 500错误

JSP在页面用<%调用声明函数时出现HTTP 500错误 错误描述&#xff1a; Eclipse在编写JSP页面时&#xff0c;在其中采用<%&#xff01;%>方式声明了函数&#xff0c;然后在页面中用<%函数名%>方式调用时&#xff0c;出现HTTP状态500错误&#xff0c;提示为&#…

书生·浦语大模型第二期实战营第四节-XTuner 微调 LLM:1.8B、多模态、Agent 笔记

来源&#xff1a; 视频来源&#xff1a;XTuner 微调 LLM&#xff1a;1.8B、多模态、Agent 1. XTuner 微调 LLM&#xff1a;1.8B、多模态、Agent 1.1 为什么要微调 1.2 两种Finetune范式 在LLM的下游应用中&#xff0c;增量预训练和指令跟随是经常会用到的两种微调模式。 增…