Java面试篇基础部分- Java中的阻塞队列

  首先队列是一种前进后出的操作结构,也就是说它只允许从队列前端进入,从队列后端退出。这个前端和后端看个人如何理解,也就是通常所说的入队和出队,队头和队尾。

  阻塞队列和一般队列的不同就在于阻塞队列是可以阻塞的,这里所说的并不是说队列中间或者队头队尾被拦截了,而是一种操作队列的线程的一种状态。在阻塞队列中,线程阻塞有两种情况。

  • 消费者阻塞:也就是说,在队列为空的时候,没有任何数据的时候,队列消费者端就会被自动阻塞,一直到有任务进入到队列之后,消费者的线程就会被自动的唤起来消费任务。
    在这里插入图片描述
  • 生产者阻塞: 在队列已经满了,或者是没有可用空间的时候,生产者端的线程都会被阻塞,直到队列中的线程被消耗,有位置进入的时候,线程被自动唤醒,并且生产数据。
    在这里插入图片描述
      二者分别对应的出队,入队操作,当队列为空的时候,出队阻塞,当队列满的时候,入队阻塞。

阻塞队列的主要操作

  阻塞队列的主要操作有插入操作和移除操作。插入操作有add()、offer()、put(),移除操作有 remove()、poll()、take() 具体如下。

  1、插入操作

  public abstract boolean add(E paramE) ;将指定的元素插入到队列中,在成功的时候返回true,如果当前没有可用的空间,就会抛出IllegalStateException。如果该元素是null,就会抛出NullPointException的异常。

public boolean add(E e) {// 添加元素成功,返回 trueif (offer(e))return true;// 添加元素失败,抛出异常elsethrow new IllegalStateException("Queue full");}

  public abstract boolean offer(E paramE);将指定的元素插入队列中,在成功的时候返回true,如果没有可以用的空间,则返回false。源码如下

 public boolean offer(E e) {// 检查元素是否为空checkNotNull(e);final ReentrantLock lock = this.lock;// 获取锁操作lock.lock();try {// 如果队列满了,则返回falseif (count == items.length)return false;else {// 如果队列为空,则将元素加入到队列中enqueue(e);return true;}} finally {// 操作成功释放锁lock.unlock();}}

  offer(E o,long timeout,TimeUnit unit);将指定的元素插入到队列中,可以设置等待时间,如果在设定的等待时间内不能向队列中加入这个元素,就会返回false

public boolean offer(E e, long tim

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1544305.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

程序员下班以后做什么副业合适?_35技术人员副业

我就是一个最普通的网络安全工程师,出道快10年了,不出意外地遭遇到瓶颈期,但是凭技术在各大平台挖漏洞副业,硬是妥妥扛过来了。 因为对于程序员来讲,这是个试错成本很低、事半功倍的选择。编程技能是一种强大生产力&a…

美团中间件C++一面-面经总结

1、TCP和UDP 的区别? 速记标识符:连靠刘墉宿营 解释: 面向连接vs无连接 可靠传输vs不保证可靠 字节流vs报文传输 拥塞控制流量控制vs无 速度慢vs速度快 应用场景自己描述 2、服务端处于close wait是什么情况,是由什么造成的&…

JAVA城市探索新纪元同城达人向导系统小程序源码

城市探索新纪元 —— 同城达人向导系统 🚀【开篇:踏入未知,探索城市的无限可能】🚀 你是否厌倦了千篇一律的旅行攻略?是否渴望一次真正深入城市肌理的探索之旅?今天,就让我们一起踏入“城市探索…

旷视科技ShuffleNetV1代码分析[pytorch版]

一、前述 旷视科技针对于ShuffleNet系列网络在GitHub网站上已开源,其链接:https://github.com/megvii-model/ShuffleNet-Series 在这个系列中,包括了ShuffleNetV1/V2网络,如下图所示。 我们点开ShuffleNetV1文件夹&#xff0…

为什么pmp证书只能对标cspm二级证书??

PMP跟CSPM一个是国际上的证书,一个是中国本土的证书。一个偏理论一个偏实践。对标来说,PMP的等级跟CSPM-2级一个等级,如果想对标更高级,那就要更高级的证书了。 现在有 PMP/PGMP 证书的可以不用参加考试就能换 CSPM -2 级跟 CSPM-…

2024年双十一买什么好?五款好物推荐!

​是不是很多朋友跟我一样,已经为双11做好了准备,打算开启买买买的节奏!作为一名家居兼数码博主,每年双11的时候都会疯狂囤很多物品,所以今天就跟大家来分享一下,我的双11购物清单,也给大家参考…

Linux-DHCP服务器搭建

环境 服务端:192.168.85.136 客户端:192.168.85.138 1. DHCP工作原理 DHCP动态分配IP地址。 2. DHCP服务器安装 2.1前提准备 # systemctl disable --now firewalld // 关闭firewalld自启动 # setenforce 0 # vim /etc/selinux/config SELINU…

解锁MySQL升级秘诀:提升性能、增强安全的必备指南

随着mysql不断演进,旧的版本不断地会发现新的漏洞,为修复漏洞体验新版本的功能,就需要对数据库进行升级操作。 升级注意点 备份!备份!备份! 1.从5.6升级到5.7需首先升级到5.6最新版;不支持跨…

Apache Iceberg 数据类型参考表

Apache Iceberg 概述-链接 Apache Iceberg 数据类型参考表 数据类型描述实例方法注意事项BOOLEAN布尔类型,表示真或假true, false用于条件判断,例如 WHERE is_active true。确保逻辑条件的正确性。INTEGER32位有符号整数42, -7可用于计算、聚合&#xf…

照片去水印怎么操作?3个高清壁纸无损去水印的教程分享

上网真好啊! 能够找到好多摄影大神分享的,超好看的自然景物照片,每一张都想拿来当电脑桌面壁纸、手机壁纸...... 但上网拿的照片有这点不好,就是大部分照片都带有防盗水印,虽说不影响照片的整体美观,但作为…

Android Studio报错 Cause connect timed out

Android Studio报错 Cause connect timed out 解决方法: 在gradle-wrapper.properties中更改distributionUrl为: distributionUrlhttps://mirrors.cloud.tencent.com/gradle/gradle-5.1.1-all.zip如果对你有帮助,就一键三连呗(关…

Win11+cuda11.7+spconv11.7搭建OpenPCdet

这里写自定义目录标题 前面詳細的教程參考:https://blog.csdn.net/xuegreat1/article/details/141892867 懶得寫了,先寫遇到的一些教程外的bug: 上文教程走完后運行demo.py,但是發現沒有裝mayavi庫,直接安裝報錯&#…

项目实战总结-Kafka实战应用核心要点

Kafka实战应用核心要点 一、前言二、Kafka避免重复消费2.1 消费者组机制2.2 幂等生产者2.3 事务性生产者/消费者2.4 手动提交偏移量2.5 外部存储管理偏移量2.6 去重逻辑2.7 幂等消息处理逻辑2.8 小结 三、Kafka持久化策略3.1 持久化文件3.2 segment 分段策略3.3 数据文件刷盘策…

迎国庆-为祖国庆生python、Java、C各显神通

" 金秋送爽,丹桂飘香“,我们即将即将迎来祖国母亲的华诞!! 七十余载风雨兼程,无数先辈以热血铸就辉煌,换来了今日的繁荣昌盛。从东方破晓的第一缕曙光,到星辰大海的无限探索,中…

git 删除 git push 失败的记录

文章目录 问题分析 问题 git push 失败后如何清理 commit 提交的内容 当我们 git push 失败后,如果下次有新的改动需要push时,会出现如下报错 分析 找到需要回退的那次commit的 哈希值 git log然后就回退到了指定版本,这个时候再把新修改…

解析rss链接数据,来长期把某博客数据订阅到自己的网站

目的 当我们打开这个订阅链接,会看到我们的文章信息以xml的形式呈现到浏览器页面中,怎么直接在我们自己的网站中,将这个链接的数据转为我们熟悉的json数据,然后渲染到自己的网站中呢 技术栈 react hookstypescriptwebpack 核心…

【C++掌中宝】深入理解函数重载:概念、规则与应用

文章目录 引言1. 什么是函数重载?2. 为什么需要函数重载?3. 编译器如何解决命名冲突?4. 为什么返回类型不参与重载?5. 重载函数的调用匹配规则6. 编译器如何解析重载函数的调用?7. 重载的限制与注意事项8. 总结结语 引…

柯桥小语种学习之语言交流 | 德语餐厅用语

01 一、入座与点餐 1. Guten Tag! Ein Tisch fr zwei Personen, bitte.(你好!请给我们一张两人桌。) 2. Knnen wir hier sitzen?(我们可以坐这里吗?) 3. Die Speisekarte, bitte.(请给我菜…

在Windows系统上安装的 zlib C++ 库

在Windows系统上安装的 zstd C 库 项目地址步骤步骤一步骤二步骤三如果生成过程中遇到如下错误: 效果 项目地址 https://github.com/madler/zlib 可以发现这个项目有CMakeLists.txt文件,那就比较好搞了 步骤 步骤一 git clone gitgithub.com:madler/zlib.git步骤二 cd zli…

丢失照片/消息/文件,当发现没有备份 Android 手机数据时急救方法

当人们发现他们没有备份 Android 手机数据时,通常为时已晚。但是,我们都不想永久丢失珍贵的照片, 消息和其他文件。这就是为什么您应该检查 遵循 5 大免费 Android 数据恢复工具和最佳替代品 他们。 排名前五的免费 Android 数据恢复软件 1.奇…