Java中的并发容器

news2025/1/13 9:24:58

Java 中的 并发容器

1.List 类

list类 线程安全的主要有 Vector 与 CopyOnWriteArrayList

a). Vector

Vector 相当于在 原有 ArrayList类的基础上将所有方法 变成同步方法

image-20230411132139479

同样的操作还有 Collections.synchronizedList() 方法,将原有List 方法包装成同步方法,

image-20230411132248526

b). CopyOnWriteArrayList

CopyOnWriteArrayList 采用的是写时复制的方式,在redis的rdb持久化和nacos服务端注册新的服务时都有用到

读操作发生在原有数组上,写操作时将复制原数组,对新数组进行操作,当写操作执行完毕后,将原有指针指向新的数组 。 CopyOnWrite 类并发容器仅适合写操作少的场景,并且新增的元素不会被立马读取到

img

2.Map 类

a). HashTable

HashTable 底层与 HashMap 基本保存一致,唯一不同的是所有方法都用 synchronized 修饰

image-20230411133101084

b). ConcurrentHashMap

ConcurrentHashMap 基于分段锁实现,大量使用了乐观锁和悲观锁

c). ConcurrentSkipListMap

ConcurrentSkipListMap 基于跳表实现,与ConcurrentHashMap相比,key是有序的

3.Set 类

a). CopyOnWriteArraySet

同步机制与 CopyOnWriteArrayList 一致

b). ConcurrentSkipListSet

同步机制与 ConcurrentSkipListMap 一致

4.Queue 类

Queue 分为 阻塞 与 非阻塞,单向 与 双向 ,有界 与 无界

阻塞指的是当队列已满时,入队操作阻塞;当队列已空时,出队操作阻塞

单向 指的是只能队尾入队,队首出队;而双向 指的是队首队尾皆可入队出队

阻塞队列 已 Blocking 标识,如常用 ArrayBlockingQueue ,LinkedBlockingQueue

单向队列 结尾为 Queue 如常用 ArrayBlockingQueue

双向队列 结尾为 Deque 如 LinkedBlockingDeque

有界队列只有 ArrayBlockingQueue 与 LinkedBlockingQueue,其余均为无界队列

使用无界队列需避免发生OOM

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

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

相关文章

自训练Self-Training学习总结

一、自训练(Self-training) Self-training是最简单的半监督方法之一,其主要思想是找到一种方法,用未标记的数据集来扩充已标记的数据集。算法流程如下: 首先,利用已标记的数据来训练一个好的模型&#xf…

ch04-损失优化

ch04-损失优化0.引言1.权值初始化1.1. 梯度消失与爆炸1.2. Xavier 初始化1.3. Kaiming 初始化1.4. 常用的权值始化方法1.5. nn.init.calculate_gain1.6. 总结2.损失函数 (一)2.1. 损失函数的概念2.2. 交叉熵损失函数 nn.CrossEntropyLoss2.3. NLL/BCE/BCEWithLogits Loss2.4. 总…

什么原因导致了儿童自闭症?跟父母养育有关吗?

导致儿童自闭症的原因是什么?这和父母的抚养有关吗?学习教育孩子的方法,让孩子快乐健康地成长,是家庭和孩子生活中的一件重要事情。不良的环境和错误的教育会导致儿童自闭症,这是真的吗?自闭症,…

1、vscode搭建C++开发环境及一些配置文件的含义

文章目录一、vscode搭建开发环境1、下载和配置MinGW-w64 编译器套件2、安装到电脑中3、配置环境变量4、测试是否安装成功5、vscode上安装C/C插件二 、配置编译环境时各个文件的含义1、task.json:此文件告诉VS代码如何构建(编译)程序&#xff…

如何利用 IP 归属地查询 API 精准锁定用户位置

引言 在互联网时代,IP 地址扮演着非常重要的角色,它可以帮助我们追踪网站访问者、优化网络服务等等。而 IP 归属地则更进一步,它可以帮助我们精确地定位 IP 地址所在的地理位置,为数据分析、网络安全、市场调研等领域提供了极大的…

「业务架构」需求工程——需求验证(第4部分)

确保规定要求满足客户需求的过程。需求验证它是一个确保特定需求满足客户需求的过程。它关心的是找到需求中的问题。当这些问题在后期发现时,或者在系统投入使用后,这些问题会导致大量的返工成本。通过系统变更来修复需求问题的成本通常比修复设计或代码…

如何选择 O2OA (翱途) 开发平台的部署架构?

O2OA (翱途) 开发平台 [下称 O2OA 开发平台或者 O2OA] 支持公有云,私有云和混合云部署,也支持复杂的网络结构下的分布式部署。本篇主要介绍 O2OA (翱途) 开发平台支持的部署环境以及常用的集群部署架构。 软硬件环境说明 支持的云化平台: …

微信小程序-组件化

微信小程序-组件化 自定义组件 业务描述:代码中有多处需要引用同一段代码,需要把他封装成一个组件 流程 在根目录创建components用于存放通用组件在创建组件文件夹选择新建components 会自动生成4个文件json文件 会出现"component": true,…

Talk预告 | 浙江大学乔硕斐:语言模型提示推理综述

本期为TechBeat人工智能社区第480期线上Talk! 北京时间3月9日(周四)20:00,浙江大学计算机科学与技术硕士——乔硕斐的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “语言模型提示推理综述 ”,届时将分享对语言…

知识点学习登记备份信息

知识点记录 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ovilnIi-1681441105895)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211228090433836.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上…

计算机网络 实验三

⭐计网实验专栏,欢迎订阅与关注! ★观前提示:本篇内容为计算机网络实验。内容可能会不符合每个人实验的要求,因此以下内容建议仅做思路参考。 一、实验目的 理解路由器转发分组的机制。 理解路由表的作用、基本结构。 掌握静态路…

Redis常见命令

Redis是典型的key-value数据库,key一般是字符串,而value包含很多不同的数据类型:1. Redis通用命令 通用指令是部分数据类型的,都可以使用的指令,常见的有: - KEYS:查看符合模板的所有key- KEYS…

cm-14.1 Android系统启动过程分析(2)- init进程的启动之前的那些事(偏嵌入式方向)

声明 前阶段在项目中涉及到了Android系统定制任务,Android系统定制前提要知道Android系统是如何启动的。本文参考了一些书籍的若干章节本文使用的代码是LineageOS的cm-14.1,对应Android 7.1.2,可以参考我的另一篇博客:如何下载Nexus5的LineageOS14.1(cm-14.1)系统源码并编译…

Golang每日一练(leetDay0038) 二叉树专题(7)

目录 112. 路径总和 Path Sum 🌟 113. 路径总和 II Path Sum II 🌟🌟 114. 二叉树展开为链表 Flatten Binary Tree to Linked-list 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 …

Nacos作为注册中心和配置中心

Cloud依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><sco…

圣戈班Saint-Gobain EDI需求分析

圣戈班Saint-Gobain&#xff08;以下简称&#xff1a;圣戈班&#xff09;是一家总部位于法国的跨国公司&#xff0c;成立于1665年。它是全球领先的建筑和高性能材料解决方案提供商之一&#xff0c;产品包括玻璃、陶瓷、管道、密封材料等&#xff0c;在欧洲、北美、亚洲和南美等…

【软件测试】可以写进简历的项目巨真实

昨天逛帖子&#xff0c;看到有自学软件测试的同学苦恼于看书学习之后&#xff0c;学过的知识转瞬即忘&#xff0c;并且没有上手的测试项目&#xff0c;不管是知识巩固还是面试求职&#xff0c;都比较艰难。 其实&#xff0c;初次接触技术工作&#xff0c;遇到这样的困难是正常…

【数据结构】二叉树链式结构

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a;初阶数据结构 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对…

【Linux】CentOS7.6 升级 gcc/g++

CentOS 7.6 升级 gcc/g的方法&#xff0c;不一定适用于其他linux系统 1.查看版本 g -v gcc -v当前查看版本&#xff0c;发现是4.8.5&#xff0c;这已经是2015年的旧版本了&#xff0c;对c11的支持不是很完善&#xff0c;为了方便学习和编写新版本的代码&#xff0c;升级一下还…

使用python采集分享119个PHP江湖论坛源码,总有一款适合您

分享119个PHP江湖论坛源码&#xff0c;总有一款适合您 119个PHP江湖论坛源码下载链接&#xff1a;https://pan.baidu.com/s/1Zz-GiS6WT3i16dZMz-5rvQ?pwdr416 提取码&#xff1a;r416 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 我的博客地址&#xff1a;…