Java并发编程的相关知识(7)-阻塞队列

2023-11-11

阻塞队列是一个支持两个附加操作的队列,这两个操作支持阻塞的插入和移除方法。

  1. 支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到队列不满。
  2. 支持阻塞的移除方法:在队列为空时,获取元素的线程会等待队列变为非空。
    7个阻塞队列

ArrayBlockingQueue

一个用数组实现的有界阻塞队列,按照先进先出的原则对元素进行排序
默认情况下不保证线程公平的访问队列,所谓公平访问队列是指阻塞的线程,可以按照阻塞的先后顺序访问队列,即先阻塞先访问。非公平是对先等待的线程是非公平的,当队列可用时,阻塞的线程都可以争夺访问队列的资格,有可能先阻塞的队列最后才访问。

LinkedBlockingQueue

一个用链表实现的有界阻塞队列,此队列的默认和最大长度为Integer.MAX_VALUE。此队列按照先进先出对元素进行排序。

ProiorityBlockingQueue

一个支持优先级的无界阻塞队列。默认情况下元素采取自然顺序升序排列。也可以用compareTo()方法指定排序规则

DelayQueue

一个支持延时获取元素的无界阻塞队列。队列使用PriorityQueue来实现。队列中的元素必须实现Delayed接口在创建元素时可以指定多久才能从队列中获取当前元素。
应用场景:
缓存系统的设计:可以用DelayQueue保存缓存元素的有效期,使用一个线程循环查询DelayQueue,一旦能从DelayQueue中获取元素时,表示缓存有效期到了。
定时任务调度:使用DelayQueue保存当天将会执行的任务和执行时间,一旦从DelayQueue中获取到任务就开始执行。比如Time

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

Java并发编程的相关知识(7)-阻塞队列 的相关文章

  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 数据挖掘入门指南!!!

    Datawhale 作者 王瑞楠 吴忠强 徐韬 田杨军 摘要 入门数据挖掘 必须理论结合实践 本文梳理了数据挖掘知识体系 帮助大家了解和提升在实际场景中的数据分析 特征工程 建模调参和模型融合等技能 数据分析 探索性数据分析 Explora
  • Scratch角色的绘制与中心点

    将鼠标移动到界面右下角的角色栏 可以选择 绘制一个角色 点击绘制 左侧会进入造型界面 现在来绘制一个圆形 点击左侧的圆 然后在画布上按住鼠标左键进行绘制 按下点即为圆心 默认是绘制椭圆 可以按住shift来绘制正圆 上方可以调整圆的填充和轮
  • 如何使用Python对文件进行压缩与解压缩

    前言 我们在日常工作中 除了会涉及到使用Python处理文本文件 有时候还会涉及对压缩文件的处理 通常会涉及到的压缩文件格式有 rar Windows 环境下用的比较多的压缩 比较著名的GUI工具是winrar tar Linux系统下的打
  • Mabtis设置控制台打印sql(转)

    在mybatis config xml 中加入以下配置即可
  • 一名普通本科生从无到有(暑期实习)的分享感悟

    前言 本篇帖子主要记录下自己在找实习的一个经过吧 有兴趣的佬们可以看看 帖子中可能有很多自己的看法 牛友们不喜勿喷哈 先介绍下自己吧 普通本科 没有竞赛经历 没有任何奖项 大三上用python做了一个项目 这就是2022年之前的我 在1 3
  • MySQL查看数据库性能常用命令

    MySQL查看数据库性能常用命令 一 查询服务器状态和配置 列出MySQL服务器运行各种状态值 mysql gt show global status 查询MySQL服务器配置信息语句 mysql gt show variables 二 慢
  • 在matlab中如何把两个txt文件合并到一起

    a 1 2 3 2 3 4 b 4 5 6 5 9 9 要求 c 1 2 3 2 3 4 4 5 6 5 9 9 使用命令 c a b 同时要横向合并 如产生 c 1 2 3 4 5 6
  • Excel列表名称

    一 给你一个整数 columnNumber 返回它在 Excel 表中相对应的列名称 例如 A gt 1 B gt 2 C gt 3 Z gt 26 AA gt 27 AB gt 28 示例 1 输入 columnNumber 1 输出 A
  • nginx服务器

    nginx服务器 Nginx服务器 engine X 是一种web服务器 它是一种开源的高性能HTTP和反向代理服务器 它也可提供IMAP POP3 SMTP代理服务等功能 Nginx是以多进程的方式来工作的 也支持多线程的方式 只是主流的
  • C++类的声明和类的实现分开写(.hpp和.cpp)

    1 声明和实现为什么要分开写 现在开始写项目了 你会发现我们一般都要写一个cpp 对应的还得有一个h文件 那么为什么在C 中我们要这么做 h就是声明 cpp就是实现 而所谓分离式实现就是指 声明 和 定义 分别保存在不同的文件中 声明保存在
  • ATM机测试点案例

    卡 是否是本行卡 是否是银行卡 会员卡 超市卡 是否是挂失卡 消磁 破损 锁卡 冻结 借记卡 贷记卡 本行卡是否能正常显示余额 插入银行卡不操作 是否会退卡或吞卡 密码 6位 输入正确的密码 输入错误的密码 密码长度测试 输入密码错误三次是
  • ucos-ii嵌入式操作系统任务调度(一)----任务调度的过程及实现原理

    先给自己打个广告 本人的微信公众号正式上线了 搜索 张笑生的地盘 主要关注嵌入式软件开发 股票基金定投 足球等等 希望大家多多关注 有问题可以直接留言给我 一定尽心尽力回答大家的问题 二维码如下 一 概念 在单片机裸机程序中 我们以函数为最
  • [Go语言入门] 13 Go语言接口(interface)详解

    文章目录 13 Go语言接口 interface 详解 13 1 接口概念 13 2 声明接口类型 13 3 实现接口 13 4 接口赋值 接口变量 给接口变量赋值 接口赋值时的拷贝方式 13 5 接口调用 13 6 interface 1
  • Java加密技术(四)——非对称加密算法RSA

    接下来我们介绍典型的非对称加密算法 RSA RSA 这种算法1978年就出现了 它是第一个既能用于数据加密也能用于数字签名的算法 它易于理解和操作 也很流行 算法的名字以发明者的名字命名 Ron Rivest AdiShamir 和Leon
  • Kafka!(多图+深入)原理详解

    一 kafka概述 1 1 定义 Kakfa是一个分布式的基于发布 订阅模式的消息队列 message queue 主要应用于大数据的实时处理领域 1 2 消息队列 1 2 1 传统的消息队列 新式的消息队列的模式 上面是传统的消息队列 比
  • DialogFragment 使用与友好交互

    Dialog顾名思义对话框 在android app是最常用的UI组成部分 以往开发基本按照设计自定义一个Dialog 某天无意间发现竟有DialogFragment这个东西 3 0后同Fragment一起更新 罪过罪过 好久没翻文档 这种
  • [OpenAirInterface实战-5] :OAI支持的5G gNB功能集

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 OpenAirInterface实战 5 OAI支持的5G gNB功能集 文火冰糖 王文兵 的博客 CSDN博客 目录 前言 第1章 5G
  • 全国科技工作者日和神州十六号腾飞祝词

    全国科技工作者日 在这个特别的日子里 我们向全国所有的科技工作者致以最诚挚的祝福和敬意 你们是推动国家科技进步的基石 是实现民族复兴的重要力量 你们日以继夜地辛勤工作 冒着生命危险探索科学的高峰 为祖国的繁荣昌盛做出了巨大的贡献 作为全国科
  • STM32菜鸟成长记录——移植FreeModbusRTU

    本文章用于记录学习RS485及配置Modbus协议 参考博文 FreeModbus移植文章1 FreeModbus移植文章2
  • Java并发编程的相关知识(7)-阻塞队列

    阻塞队列 ArrayBlockingQueue LinkedBlockingQueue ProiorityBlockingQueue DelayQueue SynchronousQueue LinkedTransferQueue Linke