当前位置: 首页 > news >正文

并发之阻塞队列

阻塞队列

  • 使用背景
  • 作用
  • 从阻塞队列中获取元素常用的三个方法
  • 往阻塞队列中存放元素的三种方式

使用背景

想要在多个线程之间传递数据,用一般的对象是不行的,比如我们常用的ArrayList和HashMap都不适合由多个线程同时操作,可能会造成数据丢失或者数据重复。

这是因为多个线程在执行的时候,执行的顺序是随机的。我们无法预判线程执行的先后顺序。可以说这完全取决于CPU。

作用

使用BlockingQueue则可以在多个线程之间安全地传递数据。一般的队列是没有控制线程状态的功能的,为了体现这种队列的强大,让人一眼望去就知道,它能让当前线程阻塞,于是人们给它加了一个Blocking前缀。

从阻塞队列中获取元素常用的三个方法

  1. take() 死等
  2. poll(long, TimeUnit) 等一段时间
  3. poll 不等

往阻塞队列中存放元素的三种方式

  1. put() 一直等
  2. offer(E, long, TimeUnit) 等一段时间
  3. offer(E) 不等

参考资料:【Java并发·10】阻塞队列 基础

http://www.lryc.cn/news/61157.html

相关文章:

  • nodejs+vue 智能餐厅菜品厨位分配管理系统
  • MySQL NULL 值
  • Python 机器人学习手册:1~5
  • OpenCV(14)-OpenCV4.0中文文档学习2(补充)
  • 八、express框架解析
  • SpringBoot整合接口管理工具Swagger
  • 50+常用工具函数之xijs更新指南(v1.2.3)
  • 【DAY42】vue学习
  • JavaScript小记——事件
  • Windows逆向安全(一)之基础知识(八)
  • PyCharm+PyQt5+pyinstaller打包labelImg.exe
  • JavaScript里实现继承的几种方式
  • 前端:运用HTML+CSS+JavaScript实现迷宫游戏
  • NoSQL数据库简介
  • 面试马铭泽
  • 查看AWS S3的目录
  • 分布式系统概念和设计-操作系统中的支持和设计
  • 【redis】bitmap、hyperloglog、GEO案例
  • 第二章:集合与区间
  • Mysql8.0版本安装
  • 开放式耳机真的比封闭式强很多吗?推荐几款主流的开放式耳机
  • Doris(7):数据导入(Load)之Routine Load
  • linux 安装php8.1 ZipArchive和libzip最新版扩展安装
  • 大数据 | 实验一:大数据系统基本实验 | 熟悉常用的HBase操作
  • Linux command(split)
  • 开放式耳机好用吗,盘点几款口碑不错的开放式耳机
  • 法规标准-ISO 16787标准解读
  • 脑力劳动-英文单词
  • 机器学习中的三个重要环节:训练、验证、测试
  • 机器学习实战:Python基于LDA线性判别模型进行分类预测(五)