ConcurrentHashMap

news2024/11/27 18:52:28

我们说ConcurrentHashMap是用在多并发环境下的HashMap

 JDK1.7

segment数组+HashEntry数组+链表(即两个数组+挂一个链表)

上锁的时候锁的是segment数组,采用分段锁,每一把锁只锁一个Segment,默认是这个数组大小为16,所以最多可以有16个线程进行并发操作

segemnt数组中的元素下面对应的是HashEntry数组(这个数组是可以扩容的)

 JDK1.8的ConcurrentHashMap已经和HashMap的底层数据结构很相似了

当数组的长度扩容到64了,而且链表长度达到8之后,再往链表中放元素就会将链表变成红黑树,

 

如何保证线程安全:

初始化Node数组采用CAS+volatile

放数据的时候采用通过:synchronized

1.HashMap没有考虑同步,是线程不安全的;

Hashtable使用了synchronized关键字,是线程安全的;

HashMap允许K/V都为null;后者K/V都不允许为null;

2.HashMap底层与HashTable原理相同,Java 8版本以后,链表长度大于8就会变成红黑树。

3.HashMap没有考虑同步,HashTable考虑了同步的问题

但是 HashTable 在每次同步执行时都要锁住整个结构。

ConcurrentHashMap 锁的方式是稍微细粒度的,只锁segment数组中的一个segment

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

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

相关文章

【D3.js】1.13-动态设置每个 Bar 的坐标

title: 【D3.js】1.13-动态设置每个 Bar 的坐标 date: 2022-12-01 16:33 tags: [JavaScript,CSS,HTML,D3.js,SVG] 虽然创建了多个rect,但是都重叠在一起,如何将他们分列开来呢? 一、学习目标 使用回调函数动态设置坐标 .attr(“x”,(d,i)>…

laravel vue tailwind

下载laravel最新7.x composer create-project --prefer-dist laravel/laravle blog 7.x-dev cd blog valet link blog valet links blog.test 测试通过后,开始安装tailwind npm i npm i tailwindcss autoprefixer postcss7 都是最新版应该也没有什么问题 在根目录下…

UE的Blend Profile

参考:Animation Blend Profile in Unity 参考:Unreal Engine - How to make a Blend Profile 参考:blend-masks-and-blend-profiles-in-unreal-engine 什么是Blend Profile Animation Blend Profile is a UE4 animation system feature that …

aws eks 使用keycloak集成eks oidc访问apiserver

资料 OpenID Connect Tokens Kubernetes 与 OpenID 集成 SSO 登录测试 Introducing OIDC identity provider authentication for Amazon EKS Understanding Amazon Cognito user pool OAuth 2.0 grants 在 Kubernetes 中使用 Keycloak OIDC Provider 对用户进行身份验证 深…

Koa2基础笔记

目录 一、快速入门 二、中间件 链式调用 洋葱圈模型 异步处理 三、路由 koa-router 四、请求参数解析 处理URL参数 处理body参数 五、错误处理 原生的错误处理 使用中间件 一、快速入门 新建文件夹使用VSCode打开,终端运行npm init -y生成package.json…

[附源码]计算机毕业设计springboot水果管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

冬季寒冷,普通空调如何做到智能控制,增温又降耗的?

寒冷的冬日总少不得取暖的工具,空调成为人们的优先选择。但是,在办公大楼、商场等需要长时间空调供暖,空调又多的地方,空调控制让不少人感觉到了困扰。上下班时间空调多,检查慢,如果漏掉其中一个&#xff0…

C++——类和对象讲解

C——类和对象讲解总览 本篇文章的讲解将按照上述的方式,逐层递进,进一步帮你拿捏C类和对象这部分。 类和对象上(基础篇) 1、初识面向对象编程: 初步了解面向过程和面向对象的区别 举个比较感人的例子用来帮助铁子…

Qt视频监控系统一个诡异问题的解决思路(做梦都想不到)

一、前言 由于Qt版本众多,几百个版本之间存在不兼容的情况,为此如果要兼容很多版本,没有取巧的办法和特殊的捷径,必须自己亲自安装各个版本编译运行并测试,大问题一般不会有,除非缺少模块,小问…

健壮性测试是什么?

当大多数人开车时,他们不会担心刹车失灵。当他们的孩子得到一个新玩具时,他们也不担心因故障受伤。事实上,大多数人在日常生活中根本不担心系统故障。 这是因为软件开发人员或质量控制工程师已经解决了质量问题。如果目标是交付高质量、可靠…

基础:html5、html、htm、xhtml、dhtml、shtml、shtm、xml、xsl、xslt

一、理解 1.1、HTML5( HyperText Markup Language 5 ) HTML5_百度百科 HTML5 技术结合了 HTML4.01 的相关标准并革新,符合现代网络发展要求,在 2008 年正式发布。HTML5 由不同的技术构成,其在互联网中得到了非常广泛…

TCP/IP五层协议栈(2)

1.传输层协议(TCP传输的机制补充) 1.1.滑动窗口 滑动窗口存在的意义就是在保证可靠性的前提下,尽量提高传输效率. 由于TCP是得保证可靠传输的,所以每一次数据发送时都需要等待对方的ACK.大部分时间都用在等ACK上,而确认应答是可靠传输的主要机制又不能不等.所以有了新的机制…

JavaScript -- 多种类型转换方法总结

文章目录类型转换1 转换为字符串2 转换为数值3 转换为布尔值4 总结类型转换 类型转换指将一种数据类型转换为其他类型 类型转换是根据当前值去创建另一个值,而不是将当前值直接进行转换 这里说到的转换都是显示类型转换,除此之外还有隐式类型转换 1 转…

MnTTS: 开源蒙古语语音合成数据集及其基线模型

本次分享内蒙古大学蒙古文信息处理重点实验室、蒙古文智能信息处理技术国家地方联合工程研究中心及语音理解与生成实验室 (S2LAB) (https://ttslr.github.io/index_S2Group.html)共同发布的开源蒙古语语音合成数据集及其基线模型。相关论文《MnTTS: An O…

BI业务用户商业分析新时代,如何把数据用透?

数字化转型进入实质性阶段,企业对于数据的需求也随之加深。然而,一些企业积累了大量数据,却难以深度释放数据价值。 近几年,作为数据应用的有力工具,BI商业智能分析平台同样进入了转折期,其发展趋势明显呈…

Nacos后台系统未授权添加管理员

一:什么是nacos Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中…

爱奇艺:基于龙蜥与 Koordinator 在离线混部的实践解析 | 龙蜥技术

在 2022 云栖大会龙蜥峰会云原生专场上,来自爱奇艺的基础架构研究员赵慰分享了《基于龙蜥与 Koordinator 的在离线混部实践》技术演讲,以下为本次演讲内容: 一、爱奇艺离线业务混部背景 与众多互联网公司一样,爱奇艺常见的负载…

Go语言学习笔记-A Tour of Go 练习笔记-Images

Exercise: Images 练习题目: Remember the picture generator you wrote earlier? Lets write another one, but this time it will return an implementation of image.Image instead of a slice of data. Define your own Image type, implement the necessary methods, …

您的推特营销选对群控了吗

作为跨境电商从业者,我们都知道,如果平台检测到违规,最多的是多账号关联。平台怎么判定我们的账号是否关联呢?一个重要的依据是浏览器的指纹信息。 一、进行站外引流的困难有哪些: 国内用户在推广海外社交媒体时&…

【OpenCV-Python】教程:3-10 直方图(4)直方图反向投影

OpenCV Python 直方图 反向投影 【目标】 直方图反向投影calcBackProject 【原理】 用于图像分割和查找感兴趣目标。简单的说,会创建一个与输入图像同样大小的图像(单通道),每个像素对应像素属于目标的概率。更简单的说就是&am…