堵塞队列之ArrayBlockingQueue和LinkedBlockingQueue解析

2023-11-18

在线程池创建的时候,需要传一个堵塞队列来维护需要执行的线程任务,其中最常用的是ArrayBlockingQueue和LinkedBlockingQueue。他们都继承了BlockingQueue接口。
这里写图片描述

ArrayBlockingQueue

一个有边界的堵塞队列,内部使用了一个队列来保存元素,有takeIndex和putIndex来维护队列头和尾部的游标。

    /** The queued items */
    //保存元素的数组
    final Object[] items;

    /** items index for next take, poll, peek or remove */
    int takeIndex;

    /** items index for next put, offer, or add */
    int putIndex;

    /** Number of elements in the queue */
    int count;

    /** Main lock guarding all access */
    //在取和存元素的时候会进行加锁
    final ReentrantLock lock;

    /** Condition for waiting takes */
    //在take的时候,如果数组为空,进行堵塞,直到数组不为空
    private final Condition notEmpty;

    /** Condition for waiting puts */
    //在poll的时候,如果数组满了,进行堵塞,直到数组有空位
    private final Condition notFull;

    public ArrayBlockingQueue(int capacity, boolean fair) {
        if<
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

堵塞队列之ArrayBlockingQueue和LinkedBlockingQueue解析 的相关文章

  • 如何在java swing中的每个页面中打印带有页脚的整个JPanel

    好吧 这可能很简单 但想不通 我有一个包含 JTable 的 JPanel JTable 包含很少的行 有时更多 因为我推入其中的表模型取决于数据库 但是 我不使用任何包含 JTable 的 JScolpane 因此 当 JTable 包含
  • 如何自定义BlockingQueue的阻塞行为

    我想创建一个阻塞队列 它根据自定义规则而不是队列中的项目数量来阻止生产者 例如 生产者生成一些文件并放入队列中 消费者经过一番分析后将它们转移到特定位置 对于上述场景 如果队列中的总文件大小达到某个阈值 我希望生产者等待生成新文件 如果总大
  • V8 如何管理它的堆?

    我知道V8的垃圾收集在工作时 会从GC的root开始追踪 这样无法到达的对象就会被标记然后被清除 我的问题是GC是如何遍历那些对象的 必须有一个数据结构来存储所有可达或不可达的对象 位图 链接表 顺便说一句 JVM 也做同样的事情吗 艾伦秀
  • 以编程方式将 PEM 证书导入 Java KeyStore

    我有一个由两个文件 crt 和 key 组成的客户端证书 我希望将其导入到 java KeyStore 中 然后在 SSLContext 中使用 以通过 Apache 的 HTTPClient 发送 HTTP 请求 但是 我似乎找不到一种以
  • java“void”和“非void”构造函数

    我用 java 编写了这个简单的类 只是为了测试它的一些功能 public class class1 public static Integer value 0 public class1 da public int da class1 v
  • 如何正确配置Tomcat SSLHostConfig?

    我正在按照本教程在 tomcat 中启用 ssl https medium com raupach how to install lets encrypt with tomcat 3db8a469e3d2 https medium com
  • 无法从后台服务通过 WiFi 访问互联网

    我将直接介绍我发现的一些事实 数据 如果您遇到 解决了类似的问题 请帮助我 我每 5 分钟向服务器发送一次数据 除非用户在服务器的帮助下手动将其关闭 wakeful broadcast receiver通过一个intent service
  • Java 的 QP 求解器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Spring 中设置 WS https 调用超时 (HttpsUrlConnectionMessageSender)

    我正在尝试为 WS 调用设置超时 我延长了WebServiceGatewaySupport并尝试将发送者超时设置为如下 public Object marshalSendAndReceive Object requestPayload We
  • 会话 bean 中的 EntityManager 异常处理

    我有一个托管无状态会话 bean 其中注入了 EntityManager em 我想做的是拥有一个具有唯一列的数据库表 然后我运行一些尝试插入实体的算法 但是 如果实体存在 它将更新它或跳过它 我想要这样的东西 try em persist
  • 如何自定义JProgressBar?

    我正在制作一个启动器 我想要一个自定义的进度栏 我已经做了一些研究 并且可以使用 JavaFX 从未用它做过任何事情 并且可以通过替换 UI 来实现 我正在寻找一个具有圆形边缘和圆形填充的酒吧 像这样的事情 package gui impo
  • grails 上的同步块在 Windows 上有效,但在 Linux 上无效

    我有一个 grails 应用程序 它依赖于服务中的同步块 当我在 Windows 上运行它时 同步按预期工作 但当我在 ams linux 上运行时 会出现 StaleObjectStateException 该问题在以下示例中重现 cla
  • .class 与 .java

    class 文件和 java 文件有什么区别 我正在尝试让我的小程序工作 但目前我只能在 Eclipse 中运行它 还不能嵌入 HTML 谢谢 编辑 那么如何使用 JVM 进行编译呢 class 文件是编译后的 java 文件 java 都
  • Java中的DRY原则[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我一直在读关于DRY https en wikipedia org wiki Don 27t repeat yourself原则 虽然看起来
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • RMI 服务器:rmiregistry 或 LocateRegistry.createRegistry

    对于服务器端的RMI 我们需要启动吗rmiregistry程序 或者只是调用LocateRegistry createRegistry 如果两者都可以的话 各有什么优点和缺点 他们是同一件事 rmiregistry是一个单独的程序 您可以从
  • 为什么在尝试使用 Java 连接到 RDS PostgreSQL 数据库时会收到 SocketTimeoutException?

    我有一个 Spring 应用程序 我试图在 AWS 上托管 几天来我一直在努力配置 我有一个 EC2 实例 并且能够通过 SSH 连接到它 我还在 AWS 中设置了 Postgres RDS 数据库 但我无法使用 IDE 中的代码连接到它
  • java中的比较器链

    正在阅读Oracle 关于接口的 Java 教程 https docs oracle com javase tutorial java IandI createinterface html其中给出了一个例子Card 打牌 我试图理解接口中的
  • Scala repl 抛出错误

    当我打字时scala在终端上启动 repl 它会抛出此错误 scala gt init error error while loading AnnotatedElement class file usr lib jvm java 8 ora
  • Java 9 中紧凑字符串和压缩字符串的区别

    有什么优点紧凑的字符串 http openjdk java net jeps 254JDK9 中的压缩字符串 压缩字符串 Java 6 和紧凑字符串 Java 9 都有相同的动机 字符串通常实际上是 Latin 1 因此浪费了一半的空间 和

随机推荐

  • 全局网络端口配置

    1 查询网络通路情况 curl cip cc 2 对网络进行配置 指定端口 export http proxy socks5 127 0 0 1 7890 export https proxy socks5 127 0 0 1 7890 查
  • openGL API glGenSamplers 详解

    暂时先放openGL官方文档的解释 后面我会加入中文翻译 Name glGenSamplers generate sampler object names C Specification void glGenSamplers GLsizei
  • 【开发工具】JAVA性能分析:3、超详细的JProfiler快照分析(官方中文版)

    Snapshots 快照分析 到目前为止 我们只查看了JProfiler GUI从配置文件JVM中运行的性能分析代理获取数据的实时会话 JProfiler还支持将所有分析数据写入文件的快照 在以下几种情况下 这可能是有利的 您可以自动记录分
  • Java中如何将Set转List呢?

    转自 Java中如何将Set转List呢 下文笔者讲述Java中Set转List的方法分享 如下所示 实现思路 方式1 借助ArrayList进行转换 方式2 借助List实现类的addAll 方法 例 Map
  • 栈之中缀表达式转后缀表达式

    题目描述 就是把我们平常写的运算表达式换成另外一种表达式 运算符前面两个数字执行相关操作 用图说明一下 比如3 2 gt 3 2 比如3 3 2 gt 3 3 2 再比如 3 3 2 2 3 gt 3 3 2 2 3 程序设计思路 特殊情况
  • Xftp5连接linux时,服务器发送了一个意外的数据包。received:3,expected:20

    Xftp5连接linux时 服务器发送了一个意外的数据包 received 3 expected 20的解决方法 xtfp5连接要点 主机 H 可在虚拟机中使用ifconfig进行查看 用户名使用who进行查看 解决方法 进入文本文件 cd
  • 自然语言处理spaCy--训练一个词性标注模型

    自然语言处理spaCy 训练一个词性标注模型 一 什么是词性标注 1 引入库 2 使用百度LAC模块进行词性标注 3 模型训练 完整代码 总结 一 什么是词性标注 词性标注的全称为Part Of Speech tagging 顾名思 义 词
  • Elasticsearch顶尖高手系列-快速入门篇

    快速入门篇课程介绍 Elasticsearch 是目前行业中非常热门的一个技术 Elasticsearch是一种分布式的海量数据搜索与分析的技术 可以用于电商网站 门户网站 企业IT系统等各种场景下的搜索引擎 也可以用于对海量的数据进行近实
  • Android AES加密算法及其实现

    昨天老大叫我看看android加密算法 于是网上找了找 找到了AES加密算法 当然还有MD5 BASE64什么的http snowolf iteye com blog 379860这篇文章列举了很多 但是基本都是j2se平台的 androi
  • python开源报表系统详细操作流程_手把手教你实现自动化报表系统

    今天给大家安利一套自动化报表的实现过程 说到报表 大家脑海里一定浮现了各种高大上的财务报表 不管他们如何实现的 本文却要教你实现自己的报表系统 对于土豪公司来说 这些都是小case 因为商业的工具平台挺多的 选的都头疼 对于小企业 如果不想
  • elf.h

    http en wikipedia org wiki Executable and Linkable Format http www ouah org RevEng x430 htm Format of an ELF executable
  • keytool生成BKS格式的私钥跟信任证书

    Andrid生成SSL证书 第一步 为服务器生成证书库 keytool genkey alias roomcastServer keypass 123456 keyalg RSA keysize 1024 validity 36500 ke
  • JS根据时区获取对应时间

    安装插件 luxon yarn add luxon 页面使用 引入DateTime类 import DateTime from luxon let c DateTime fromObject zone 传入时区 zone America L
  • 操作系统9-文件系统,I/O子系统

    大纲 文件系统和文件 文件描述符 目录 文件别名 文件系统种类 虚拟文件系统 文件缓存和打开文件 文件分配 空闲空间管理 I O子系统特点 结构 传输 冗余磁盘阵列RAID 哟西太太太太太激动了 算是真正意义上的第一次完整严谨写了 博客 笔
  • Java StringBuilder类(为什么更高效、常用方法、构造器)

    StringBuilder类 一 引言 二 StringBuilder类特点 三 StringBuilder构造方法 四 StringBuilder常用方法 五 StringBuilder为什么高效率 六 StringBuffer类 一 引
  • android 文件删除命令大全,Android中删除sdcard里文件的命令

    Android中删除sdcard里文件的命令 有时我们需要删除android模拟器或手机上的sd卡文件 特别是模拟器上的 这时我们就需要借助于一些命令来帮助我们删除文件 复制代码 代码如下 重新挂载模拟器 adb remount 开始she
  • fasterxml ToStringSerializerBase报错

    ToStringSerializerBase报错 报错内容 整合dubbo时报错 Caused by java lang NoClassDefFoundError com fasterxml jackson databind ser std
  • 英语姓名

    英语姓名的一般结构为 教名 自取名 姓 如 William Jafferson Clinton 但在很多场合中间名往往略去不写 如 George Bush 而且许多人更喜欢用昵称取代正式教名 如 Bill Clinton 上述教名和中间名又
  • Unity中的单元测试

    我知道的单元测试有两种方法 1 从Unity的AssetStore窗口下载UnityTestTools 已下架了 2 使用TestRuner 2018 2 5以上版本有 我用的是2018 2 7 TestRuner的用法 操作窗口 Wind
  • 堵塞队列之ArrayBlockingQueue和LinkedBlockingQueue解析

    在线程池创建的时候 需要传一个堵塞队列来维护需要执行的线程任务 其中最常用的是ArrayBlockingQueue和LinkedBlockingQueue 他们都继承了BlockingQueue接口 ArrayBlockingQueue 一