Java面试题:ConcurrentHashMap
ConcurrentHashMap
一种线程安全的高效Map集合
jdk1.7之前
底层采用分段的数组+链表实现

一个不可扩容的数组:segment[]
数组中的每个元素都对应一个HashEntry数组用以存放数据
当放入数据时,根据key的哈希值找到对应的segment数组下标
找到下标后就会添加一个reentrantlock来上锁
并发情况下,多个线程使用cas的方式来尝试获取锁
同时只有一个线程来操作HashEntry数组的数据
每次上锁锁住整个HashEntry数组
性能较低,但线程安全
jdk1.8之后
底层采用数据结构和HashMap一样,数组加链表/红黑树的结构
放弃了segment的设计
底层采用了CAS+Synchronized的方式来保证并发的安全问题
CAS来控制节点的添加,同一时间只能添加一个数据
Synchronized锁定链表和红黑树的头结点,只要hash不冲突,就不会产生并发问题,提升效率
一个下标下的头结点被锁住不会影响其他的下标
每次只锁住一颗树/链表
影响范围小,分段锁精度更好,性能更好
相关文章:
Java面试题:ConcurrentHashMap
ConcurrentHashMap 一种线程安全的高效Map集合 jdk1.7之前 底层采用分段的数组链表实现 一个不可扩容的数组:segment[] 数组中的每个元素都对应一个HashEntry数组用以存放数据 当放入数据时,根据key的哈希值找到对应的segment数组下标 找到下标后就会添加一个reentrantlo…...
现在闪侠惠递寄快递有福利了,千万不要因没把握住而后悔呀!
闪侠惠递平台寄快递现在真的是太便宜了,优惠价格把握不住,后悔都来不及!大家可以在闪侠惠递上面寄快递,价格真的非常优惠呢,比咱们平常寄快递的价格都优惠呢,真的,小编都亲自替大家尝试过了呢。…...
vue+ant-design+formBuiler表单构建器——技能提升——form design——亲测有效
最近看到后端同事在弄一个后台管理系统,额,前端真的是夹缝中生存啊,AI抢饭碗,后端也想干前端的活儿。。。 他用到了表单构建器,具体效果如下: 网上有很多适用于ElementUi和ant-design的form design插件,下…...
Git 如何管理标签命令(tag)
1.查看本地仓库tag --1.查看本地仓库tag UserDESKTOP-2NRT2ST MINGW64 /e/GITROOT/STARiBOSS/STARiBOSS-5GCA (gw_frontend_master) $ git tag 1stBossUpgrade V10.0.1_20220224_test V10.0.1_20220301_test tag-gwfrontend-V1.0.12-230625 tag-gw_frontend-23.08.29 tag-gw_f…...
零样本身份保持:ID-Animator引领个性化视频生成技术新前沿
在最新的研究进展中,由Xuanhua He及其团队提出的ID-Animator技术,为个性化视频生成领域带来了突破性的创新。这项技术的核心在于其零样本(zero-shot)人物视频生成方法,它允许研究者和开发者根据单一的参考面部图像生成…...
在Go语言中,可以这样使用Json
在Go语言中,处理JSON数据通常涉及编码(将Go结构体转换为JSON字符串)和解码(将JSON字符串转换为Go结构体)。Go标准库中的encoding/json包提供了这些功能。第三方插件可以使用"github.com/goccy/go-json"也有同…...
React useEffect Hook: 理解和解决组件双重渲染问题
在React中,useEffect可能会在组件的每次渲染后运行,这取决于它的依赖项。如果你发现useEffect运行了两次,并且你正在使用React 18或更高版本的严格模式(Strict Mode),这可能是因为在开发模式下,…...
【C语言】—— 动态内存管理
【C语言】——动态内存管理 一、动态内存管理概述1.1、动态内存的概念1.2、动态内存的必要性 二、 m a l l o c malloc malloc 函数2.1、函数介绍2.2、应用举例 三、 c a l l o c calloc calloc 函数四、 f r e e free free 函数4.1、函数介绍4.2、应用举例 五、 r e a l l o …...
Oracle到PostgreSQL的不停机数据库迁移
1970 年,数据库之父 Edgar Frank Codd 发表了“数据的关系模型”论文,该论文为往后的关系型数据库的发展奠定了基础。1979 年,基于关系模型理论的数据库产品 Oracle 2 首次亮相,并在过去的三四十年时间里,横扫全球数据…...
OpenAI 发布新款大型语言模型 GPT-4o,带大家了解最新ChatGPT动态。
OpenAI 发布新款大型语言模型 GPT-4o 昨日OpenAI 举办了一场线上活动,正式发布了其最新研发的 AI 模型 GPT-4o,并详细介绍了该模型的强大功能和未来发展规划。此次发布标志着 AI 技术的重大突破,为用户提供了更加便捷、高效的 AI 工具&#…...
网络编程套接字(一) 【简单的Udp网络程序】
网络编程套接字<一> 理解源端口号和目的端口号PORT VS PID认识TCP协议和UDP协议网络字节序socket编程接口sockaddr结构简单的UDP网络程序服务端创建套接字服务端绑定运行服务器客户端创建套接字关于客户端的绑定问题启动客户端启动客户端本地测试INADDR_ANY 理解源端口号…...
【CANoe】CAPL中生成报告常用的测试函数
文章目录 一、常用函数1、测试标题、描述、Comment2、测试步骤3、延时4、报告中插入图片5、报告中插入窗口截图二、实例源码三、报告效果一、常用函数 1、测试标题、描述、Comment testCaseTitle("TC 3.1", "Test Case 3.1"); testCaseDescription...
WEB后端复习——MVC、SSM【含登录页面代码】
MVC(Model-View-Controller)是一种软件设计模式,用于将应用程序分解为三个相互关联的组件:模型(Model)、视图(View)和控制器(Controller)。这种模式在构建用户…...
灵卡科技HDMI音视频采集及H.264编码一体化采集卡—LCC260
推荐一款由灵卡科技倾力打造的高品质HDMI音视频采集卡——LCC260。以创新的技术,精湛的工艺和卓越的性能,为您提供全方位的音视频解决方案。 LCC260是一款集HDMI音视频采集与H.264编码于一身的全功能采集卡。它的输入端配备了最先进的HDMI 1.4a标准接口&…...
智能自助终端主板RK3288/RK3568在酒店前台自助机方案的应用,支持鸿蒙,支持免费定制
酒店前台自助机解决方案是一款基于自助服务终端,能够让客人通过简单的操作完成入住登记/退房的解决方案,大幅提高酒店的工作效率,提升客人体验,降低人力成本。 该方案解决了以下传统前台登记入住方式的痛点: 1、人流量…...
Visual Studio环境搭载
环境搭建步骤: 下载软件 安装软件 运行软件 1 下载软件 在百度搜索 visual studio,选择 如下图中的选项 进入Visual Studio 官网后,选择 下载Windows版,并选择Community 2017 社区版本进行下载保存软件到电脑中 2 安装软件 双击…...
添砖Java之路(其八)——继承,final关键字
目录 继承: super关键字: 方法重写: 继承特点: 继承构造方法: final关键字: 继承: 意义:让类于类之间产生父类于子类的关系,子类可以直接使用父类中的非私有成员(包…...
一篇详解Git版本控制工具
华子目录 版本控制集中化版本控制分布式版本控制 Git简史Git工作机制Git和代码托管中心局域网互联网 Git安装基础配置git的--local,--global,--system的区别 创建仓库方式1git init方式2git clone git网址 工作区,暂存区,本地仓库…...
谷歌邮箱2024最新注册教程
大家好,我是蓝胖子,今天教大家如何注册谷歌邮箱 谷歌邮箱的注册后面的用途会经常用得到 首先,需要魔法自行解决 第一步:打开谷歌官网 www.google.com 确保谷歌官网能正常打开 第二步:创建账号 接下来可能会遇到这…...
Spring事务深度解析
Spring事务深度解析 介绍 在现代的软件开发中,事务管理是一个非常重要的话题。Spring框架提供了强大的事务管理功能,使得开发人员能够轻松地处理数据库操作的一致性和并发性问题。本文将深入探讨Spring事务的原理和使用方法。 什么是事务?…...
告别claude code封号烦恼使用taotoken稳定密钥与聚合接口的配置指南
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 告别Claude Code封号烦恼使用Taotoken稳定密钥与聚合接口的配置指南 对于依赖Claude Code进行编程辅助的开发者而言,直…...
虚实融合新纪元:UWB物理锚点 vs 镜像视界数维空间无感定位
虚实融合新纪元:UWB物理锚点 vs 镜像视界数维空间无感定位虚实融合产业正从“物理锚点绑定”迈向“数维空间原生映射”新纪元。UWB以基站与标签构建刚性物理坐标体系,是虚实同步的硬件依赖范式;镜像视界浙江科技有限公司以纯视觉AI重构空间感…...
如何用嘎嘎降AI处理心理学论文:心理学研究生毕业论文降AI4.8元完整操作教程
如何用嘎嘎降AI处理心理学论文:心理学研究生毕业论文降AI4.8元完整操作教程 关于心理学论文降AI教程,有几个细节提前知道能少走很多弯路。 核心用嘎嘎降AI(www.aigcleaner.com),4.8元,达标率99.26%。这篇…...
Cursor Free VIP技术架构深度解析:设备标识重置与多平台兼容实现
Cursor Free VIP技术架构深度解析:设备标识重置与多平台兼容实现 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reache…...
这五家软件许可优化的公司,我直接说结论。
你要是搞工程设计软件的(CAD、SolidWorks、CATIA这些),在国内,闭眼找。 你要是啥软件都有一大堆,不差钱人也多,上OptiCore(优化内核)。 你要是全在云上跑、主用微软全家桶…...
Deno_2.0全栈开发实战下一代JavaScript运行时完全指南
Deno 2.0全栈开发实战:下一代JavaScript运行时完全指南 📅 发布日期:2026-05-21 | 🏷️ 标签:Deno、TypeScript、全栈开发、Fresh框架、边缘计算 📖 阅读时间:约25分钟 | 💡 难度:中级到高级 前言:Deno 2.0——Node.js之父的"理想主义"终于落地 2018年…...
如何快速自定义游戏光标:提升操作精度的完整指南
如何快速自定义游戏光标:提升操作精度的完整指南 【免费下载链接】YoloMouse Game Cursor Changer 项目地址: https://gitcode.com/gh_mirrors/yo/YoloMouse 在激烈的游戏战斗中,你是否经常因为找不到鼠标光标而错失良机?当屏幕特效绚…...
ElevenLabs蒙古文语音接入全攻略:从API密钥配置到蒙古文音素对齐的7步落地法
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs蒙古文语音接入的背景与技术价值 随着全球多语言AI语音技术加速演进,蒙古语作为联合国教科文组织列为“脆弱型”语言之一,其数字语音合成能力长期受限于高质量语音数据…...
从B站视频到高品质音频:BilibiliDown音频提取全攻略
从B站视频到高品质音频:BilibiliDown音频提取全攻略 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/…...
Frida+Fart实战:在ART Dex加载临界点精准dump二代壳内存Dex
1. 这不是“又一个脱壳教程”,而是对Android加固演进逻辑的现场解剖你打开一个市面上主流的金融类App,用adb shell pm list packages | grep bank随手一搜,发现它被某知名商业加固厂商打了“二代壳”——启动慢、内存占用高、关键so文件加密、…...
