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

并发容器简介

由于同步器的串行化严重降低了并发性,Java之后推出了多种并发容器,使用并发容器来替代同步容器,可以提高绳索性并降低风险
J.U.C包中提供了几个非常有用的并发容器作为线程安全的容器:
在这里插入图片描述
J.U.C包中提供的并发容器命名一般分为三类:

  • Concurrent:
    • 这类线程比CopyOnWrite要 高一些,但写操作代价要小一些
    • 此外,Concurrent往往提供了较低的遍历一致性,就是说容器发生改变,遍历的操作仍然不会停,在获取容器大小size的时候,容器是否为空等方法,不一定完全准确。
  • CopyOnWrite:一个线程写,多个线程读。读操作时不加锁,写操作时通过在副本上枷锁保证并发安全,空间开销大
  • Blocking:内部实现一般是基于锁,提供阻塞队列的能力

并发场景下的Map

如果对数据有一定的要求,则需使用Hashtable;
在大部分场景通常都是弱一致性,使用ConcurrentHashMap即可;如果数据量在千万级别,且存在大量增删改操作,则可以考虑使用ConcurrentSkipListMap

并发场景下的List

读多写少用CopyOnWriteArrayList
写多读少用ConcurrentLinkedQueue,需要有容量限制

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 图形零散知识点整理
  • 【STM32】FMC
  • 大模型企业应用落地系列》基于大模型的对话式推荐系统》对话推荐系统技术架构
  • 【数学建模】层次分析法
  • 【pyhton】python如何实现将word等文档中的文字转换成语音
  • 旅游行业怎么利用C#接口发送短信
  • Kafka日志及常见问题
  • 嵌入式开发高频面试题——第二章 C/C++高频面试题(上)
  • 数据仓库系列15:数据集成的常见挑战有哪些,如何应对?
  • Leetcode Hot 100刷题记录 -Day3(双指针)
  • hive中datediff函数介绍
  • Golang | Leetcode Golang题解之第372题超级次方
  • Git之1.0版本重要特性及用法实例(五十二)
  • 嵌入式开发高频面试题——第二章 C/C++高频面试题(下)
  • 指针进阶(多级指针)
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【知识碎片】第三方登录弹窗效果
  • Django 博客开发教程 8 - 博客文章详情页
  • ES6--对象的扩展
  • es的写入过程
  • javascript 总结(常用工具类的封装)
  • Java知识点总结(JavaIO-打印流)
  • JS字符串转数字方法总结
  • Node 版本管理
  • PAT A1092
  • Python进阶细节
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 基于Android乐音识别(2)
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 利用jquery编写加法运算验证码
  • 你不可错过的前端面试题(一)
  • 使用docker-compose进行多节点部署
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 在weex里面使用chart图表
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • RDS-Mysql 物理备份恢复到本地数据库上
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​Spring Boot 分片上传文件
  • #if 1...#endif
  • (1)(1.13) SiK无线电高级配置(五)
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (篇九)MySQL常用内置函数
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (一)u-boot-nand.bin的下载