java.util.concurrent.ConcurrentHashMap源码学习(二)

ConcurrentHashMap中重要的方法:

1. V get(Object key)
先从segments数组中取出对应的段Segment<K,V>,然后再取到对应key的value值。

2. V put(K key, V value)
先从segments数组中取出对应的段Segment<K,V>,然后对key赋值。当value为null时抛出NullPointerException异常

3. V remove(Object key)
先从segments数组中取出对应的段Segment<K,V>,然后再执行删除操作。

4. boolean containsValue(Object value)
首先尝试在不锁整个map的情况下进行查询,如果在查询过程中没有出现结构变化则直接返回结果,如果有结构变化则在尝试指定的RETRIES_BEFORE_LOCK次数后,锁定整个map进行查询。其中利用了Segment中的modCount来检测是否有结构变化。

5. void clear()
对每个段Segment执行clear()操作。

6. int size()
首先尝试在不锁整个map的情况下进行统计大小,如果在统计过程中没有出现结构变化则直接返回结果,如果有结构变化则在尝试指定的RETRIES_BEFORE_LOCK次数后,锁定整个map进行统计。其中利用了Segment中的modCount来检测是否有结构变化。
小论文/大论文必备 | YOLO多模态目标检测、绘制曲线对比图 | 引入多种绘制曲线对比图,包括mAP0.5,mAP0.5:0.95,Loss损失变化的曲线对比 本文通过可视化方法分析YOLO多模态模型的训练过程,对比不同实验的检测精度和损失函数变化。主要内容包括:1)绘制mAP@0.5和mAP@0.5:0.95曲线评估检测精度;2)分析边界框回归损失(box_loss)、分类损失(cls_loss)和分布式损失(dfl_loss)的收敛趋势;3)提供完整的Python代码实现,支持多实验对比,可生成高清曲线图。该方法能直观展示模型训练效果,便于优化策略评估和参数调优。 阅读详情

相关推荐

使用 arxiv-sanity 实时跟进自己研究领域的Paper

介绍 arxiv.org是一个非常大的预印本资源库,里面有大量的最新的论文,但缺点是浏览、搜索和排序不是很方便。这个资源库每天会更新大量的论文,如果通过手动搜索和浏览则效率很低,高引用的好文章难以及时的找到并阅读,造成时间的浪费。因此 使用 ...

John's Blogs 8279

Java源码之ConcurrentHashMap

Java源码之ConcurrentHashMap 一、概述 一个比Hashtable性能更优的线程安全的Map类,它就是ConcurrentHashMap,本文基于Java7的源码做剖析。 从JDK1.2起,就有了HashMap,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的DougLea给我们带来了concurrent包(即java....

walker lee 1548

别再只设接触压力了!用ANSYS Workbench模拟O型圈密封泄漏的完整流程

本文详细介绍了在ANSYS Workbench中模拟O型圈密封泄漏的完整流程,重点解析了流体渗透压力载荷的设置与应用。通过双物理场耦合模型和精确的参数配置,帮助工程师准确评估密封性能,避免传统方法仅考虑接触压力的局限性。文章还提供了常见问题的解决方案和工程实践建议,提升密封设计的可靠性。

weixin_30372371的博客 399

并发容器分析(五)--ConcurrentHashMap

一、简介     ConcurrentHashMap是Map的一种并发实现,在该类中元素的read操作都是无锁了,而write操作需要被同步。这非常适合于读操作远大于写操作的情况。在实现过程中,ConcurrentHashMap将所有元素分成了若干个segment,每个segment是独立的,在一个segment上加锁并不影响其他segment的操作。segment本身是一个hashtable,...

思过崖 348

SAP BTP开发入门:从PaaS到CAP/UI5的30天学习路线

在云计算与数字化转型的大背景下,企业系统集成与云端扩展需求激增,传统的单点开发模式正面临深刻变革。PaaS(平台即服务)作为云原生的核心概念,将基础设施、开发环境与应用服务统一封装,为企业提供了灵活的扩展能力。SAP BTP正是SAP生态中的PaaS平台,它承载着系统集成、低代码开发、AI服务与数据管理,成为连接S/4HANA等核心业务系统与创新应用的桥梁。对于ABAP开发者而言,掌握BTP不仅是技能升级,更是应对从传统部署向云端订阅模式转型的必由之路。本文从平台基础出发,梳理BTP的核心服务与开发模型(如

weixin_31766003的博客 284

OpenDRIVE车道计算避坑指南:为什么你的poly3曲线总对不齐?

本文深入解析OpenDRIVE标准中车道几何计算的三大核心难题:参数化三次多项式(ParamPoly3)的坐标系转换与参数映射、车道偏移与宽度的优先级判定,以及螺旋线(Spiral)接续的平滑性保障。通过实战案例与代码示例,提供了一套避免车道线错位与曲率不连续的精确计算与验证方法,是高精地图开发与仿真场景构建的实用避坑指南。

q9w8e7r6t5的博客 423

BaseServlet的抽取:java.lang.NoSuchMethodException: cn.itcast.travel.web.servlet.UserServlet.add(javax.s

java.lang.NoSuchMethodException: cn.itcast.travel.web.servlet.UserServlet.add(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) BASEServlet UserServlet CategoryServlet 原因分析: 因为方法是被protected,应该忽略访问权限修饰符获取方法,获取方法时应该把获取的反射的方法换

your_棒棒糖的博客 1451

Jetson nano/nx使用麒麟arm版向日葵实现远程控制

Jetson nano/nx使用麒麟arm版向日葵实现远程控制1、安装向日葵软件2、运行Sunlogin Client3、向日葵闪退问题4、重启系统5、重启后黑屏问题 特别提醒: 本博客的第3步切换桌面管理环境到lightdm,存在重启后开机黑屏的风险,我在自己的nano/nx上都没有问题,但帮一个同学的nx配置时,切换到lightdm,重启开机却出现了黑屏,所以执行第3步的话要有心理准备,黑屏解决方法见第5步,特此提醒。

胡乱学点东西 2万+

java hashmap里明明有对应的key却得不到它的value

hashmap里明明有对应的key却得不到它的value,get这个key取出来null,原因是key多加了一个空格号!!!!!! 真是醉了 哎 一脸懵b 这谁顶的住!!!!!! ...

weixin_41884118的博客 1656

2025年5月架构设计师论文真题回顾,附写作技巧、所涉知识点及参考范文(三)

本文主要回顾2025年上半年(2025-5-24)系统架构设计师考试下午论文的题目,同时附带写作技巧、所涉知识点及参考范文。试题三:多模型数据库及应用。

一几文的编程学习笔记。 630

两万字硬核指南!Python爬虫requests库从入门到精通:新手也能搞定所有爬取场景(附实战案例+避坑大全)

请求头是客户端发送给服务器的额外信息,比如User-Agent(浏览器类型)、Referer(来源页面)、Cookie(登录凭证)、(编码方式)等。Cookie是服务器存储在客户端的小型文本文件,包含用户的登录凭证、偏好设置等信息。浏览器会在每次请求时自动携带Cookie,服务器通过Cookie识别用户身份。代理IP是一个中间服务器,你的请求先发送到代理IP,再由代理IP发送到目标网站,目标网站只能看到代理IP的地址,看不到你的真实IP。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1496

批量运行状态查询报空指针异常解决

服务器上发现批量运行状态查询有时会报系统未知错误,然后查询日志发现,batch端返回的rejcode=null,导致mweb无法识别错误类型。 但是为什么rejcode会等于null呢? 跟踪代码发现,batchtemplate里面有一个try catch,在catch里面会给rejcode重新赋值,所以验证try里面的代码 try {             context.setD

qq_21857459的博客 2164

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java.util.concurrent包

本文是我们学院课程中名为Java Concurrency Essentials的一部分 。 在本课程中,您将深入探讨并发的魔力。 将向您介绍并发和并发代码的基础知识,并学习诸如原子性,同步和线程安全之类的概念。 在这里查看 ! 目录 1.简介 2. java.util.concurrent 2.1。 执行者 2.2。 执行器服务 2.3。 并发集合 ...

最佳 Java 编程 961

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

032_java.util.concurrent.ConcurrentHashMap

ConcurrentHashMap是HashMap的线程安全版本,数据结构与HashMap一致。针对桶数据的put将会使用cas进行预先占位,存在桶数据则使用sychronized锁住。在扩容阶段,并发线程会帮助一起搬迁数据,该逻辑较为复杂。

吃饭睡觉打豆豆 855

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java的JDK源码阅读顺序整理笔记

很多java开发的小伙伴都会阅读jdk源码,然而确不知道应该从哪读起。以下为小编整理的通常所需阅读的源码范围。 标题为包名,后面序号为优先级1-4,优先级递减 文章目录 1、java.lang 2、java.util 3、java.util.concurrent 4、java.util.concurrent.atomic 5、java.lang.reflect 6、java.lang.annotation 7、java.util.concurrent.locks

宜春 1952

java.util.concurrent包下的并发容器

一、简述 不考虑多线程并发的情况下,容器类一般使用ArrayList、HashMap等线程不安全的类,效率更高。并发场景,常用到ConcurrentHashMap、ArrayBlockingQueue等线程安全的容器类,虽然牺牲了一些效率,但却得到了安全。 #二、java.util.concurrent包下的线程安全容器 ConcurrentHashMap:并发版HashMap CopyOnWriteArrayList:并发版ArrayList CopyOnWriteArraySet:并发Set Conc

ChineseSoftware的博客 506

JDK源码解析 - java.util.concurrent.ConcurrentHashMap

分析这个类前,补充一些相关的基本常识 HashMap:JDK8以前是头插法,JDK8后是尾插法 HashMap扩容时,可能会导致死循环: 如果两个线程同时触发扩容,在移动节点时会导致一个链表中的2个节点相互引用,从而生成环链表 原因,反正我没看懂 ConcurrentHashMap的扩容实现: 当往hashMap中成功插入一个key/value节点时,有可能触发扩容动作:如果新增节点之后,...

阶前空雨 593

java.util.concurrent.ConcurrentHashMap深度解析

java.util.concurrent.ConcurrentHashMap<K,V> JDK1.8 本文的分析的源码是JDK8的版本,与JDK6的版本有很大的差异。实现线程安全的思想也已经完全变了,它摒弃了Segment(锁段)的概念,而是启用了一种全新的方式实现,利用CAS算法。它沿用了与它同时期的HashMap版本的思想,底层依然由“数组”+链表+红黑树的方式思想,大于8个转换为红黑树。默认初始大小16,负载因子也是0.75,定位元素的方法也是先hashCode(),再无符号右移16位异或

zikai_liang的博客 1181

java.util.concurrent.ConcurrentHashMap源码分析(JDK1.8)

一、引言 ConcurrentHashMap是Java并发工具包中的Map实现类,它支持多个线程并发操作Map。可以说,ConcurrentHashMap就是支持并发操作的HashMap。和HashMap不同的是,ConcurrentHashMap不支持添加键或值为null的键值对。 ConcurrentHashMap继承关系及其内部类继承关系图(红色部分为内部类): ConcurrentHas...

APlus 847

【java.util.Concurrent包】ConcurrentHashMap详解及源码解析

最近一次面试被问到ConcurrentHashMap原理,segment的数据结构,以及为什么可以保证并发下的效率(相比HashTable直接加锁),虽然知道利用的分段锁技术,但是具体的不是很清楚。 一、背景: 线程不安全的HashMap     因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。   效...

weixin_38035852的博客 2252

JDK源码(1)-阅读指引

说在最前面的话: 其实JDK源码的阅读,网上资料特别多,我阅读的最主要目的是自己学习,所以我读的可能不那么好,我的角度是从源码和源码对应的注释读起,顺便还能练练英语。 接下来准备对JDK的常见源码进行一下阅读,特整理一个学习指南出来供大家参考: 一、准备工作 以JDK1.8版本进行阅读。我下载的是比较新的jdk8u版本。 源码下载地址:http://hg.openjdk.java.net...

十步杀一人-千里不留行 1845

JDK1.8 ConcurrentHashMap 源码解析

概述 ConcurrentHashMap 是 util.concurrent 包的重要成员。 ConcurrentHashMap 的源代码会涉及到散列算法,链表数据结构和红黑树 Java8 ConcurrentHashMap 源码真心不简单,最难的在于扩容,数据迁移操作不容易看懂。 前面我画了几张图, 便于理解. 剩下的需要你自己静下新来,安心看源码. 建议从 put 方法开...

张伯毅的专栏 1295

图解java.util.concurrent并发包源码系列——深入理解ConcurrentHashMap并发容器,看完薪水涨一千

ConcurrentHashMap是java.util.concurrent提供的一个并发安全的容器,可以实现高并发场景下读写的并发安全的同时兼顾了性能。它是HashMap的加强版,是并发安全的HashMap。ConcurrentHashMap是基于HashMap的扩展,所以可以先简单回顾一下HashMap。HashMap是一个存储键值对(key-value)的容器,往容器中放入元素要指定对应的key,往容器中获取元素前,通过指定key来获取对应的value。

weixin_43889578的博客 645

JAVA源码导读

JAVA源码导读 源码阅读顺序,java篇 转载:https://blog.csdn.net/qq_21033663/article/details/79571506 1、java.lang 1) Object 1 wait(), notify(), notifyAll(), wait(timeout), hashCode(), equals(), clone() 2) String 1 ch...

backstreetBoy1的博客 369

concurrenthashmap是什么锁_JDK1.8 util-concurrent-ConcurrentHashMap源码分析

在介绍ConcurrentHashMap源码之前,很有必要复习下java并发编程中的一些基础知识,比如内存模型等。存储模型并发编程中的三个概念1、原子性2、可见性3、重排序对HashMap在jdk8有所了解对CAS有所了解对内置锁和显示锁等有所了解jdk8对ConcurrentHashMap做了很大的调整,首先因为HashMap在jdk8已经做了数据结构上的优化,增加了红黑树,详情可以参考我之前的...

weixin_29543939的博客 208

java.util.concurrent源码包的结构

打算看一下concurrent包的源码,通过java并发编程的艺术这本书,大致将concurrent包分为五个模块 1. Aomic数据类型 这部分都被放在java.util.concurrent.atomic这个包里面,实现了原子化操作的数据类型,包括Boolean,Integer,Long, 和Referrence这四种类型以及这四种类型的数组类型。 2. 锁 这部分都被放在ja...

zy345293721的博客 305
上一篇: java.util.concurrent.ConcurrentHashMap源码学习(一)
下一篇: java.util.concurrent.ConcurrentHashMap源码学习(三)
windcpp
博客等级 码龄19年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值