ConcurrentHashMap原如何保证的线程安全?

简介: JDK1.7:使用分段锁,将一个Map分为了16个段,每个段都是一个小的hashmap,每次操作只对其中一个段加锁JDK1.8:采用CAS+Synchronized保证线程安全,每次插入数据时判断在当前数组下标是否是第一次插入,是就通过CAS方式插入,然后判断f.hash是否=-1,是的话就说明其他线程正在进行扩容,当前线程也会参与扩容;删除方法用了synchronized修饰,保证并发下移除元素安全

JDK1.7:使用分段锁,将一个Map分为了16个段,每个段都是一个小的hashmap,每次操作只对其中一个段加锁

JDK1.8:采用CAS+Synchronized保证线程安全,每次插入数据时判断在当前数组下标是否是第一次插入,是就通过CAS方式插入,然后判断f.hash是否=-1,是的话就说明其他线程正在进行扩容,当前线程也会参与扩容;删除方法用了synchronized修饰,保证并发下移除元素安全

目录
相关文章
|
网络协议 安全 Linux
【内网安全】隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac
【内网安全】隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac
219 0
|
10月前
|
机器学习/深度学习 人工智能 数据处理
深入浅出卷积神经网络(CNN)
【10月更文挑战第40天】本文旨在通过浅显易懂的语言和直观的示例,带领初学者了解并掌握卷积神经网络(CNN)的基本概念、结构以及在图像处理中的应用。我们将从CNN的核心组成讲起,逐步深入到网络训练的过程,最后通过一个实际的代码示例来展示如何利用CNN进行图像识别任务。无论你是编程新手还是深度学习爱好者,这篇文章都将为你打开一扇通往人工智能世界的新窗。
|
9月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
10月前
|
Java 开发者
Java“NoSuchElementException”问题解决
“NoSuchElementException”是Java编程中常见的异常之一,通常发生在尝试从集合或迭代器中获取不存在的元素时。本文将介绍该异常的原因、常见场景及解决方法,帮助开发者有效应对这一问题。
778 5
|
10月前
|
JavaScript 前端开发
`addEventListener` 方法的第三个参数有什么作用?
【10月更文挑战第29天】`addEventListener` 方法的第三个参数提供了对事件传播阶段的精细控制,使开发人员能够根据具体的业务场景和需求,灵活地处理事件的触发顺序和执行逻辑,从而实现更加丰富和精确的交互效果。
|
缓存 BI
[计算机网络(第八版)]第二章 物理层(学习复习笔记)
[计算机网络(第八版)]第二章 物理层(学习复习笔记)
|
监控 数据可视化 数据挖掘
ERP系统中的销售预测与市场分析
【7月更文挑战第25天】 ERP系统中的销售预测与市场分析
767 2
|
机器学习/深度学习 人工智能 安全
运用F5构建机器人防御,轻松应对恶意Bot威胁
运用F5构建机器人防御,轻松应对恶意Bot威胁
184 0
|
运维 监控 Kubernetes
Kubernetes Pod深度解析:构建可靠微服务的秘密武器(下)
本文旨在全面而深入地探讨Kubernetes(K8s)中的Pod概念,为读者提供对其核心特性和应用场景的深入理解。Pod作为Kubernetes的最小部署单元,承载着容器化应用的核心功能,是构建云原生应用的重要基石。
|
并行计算 物联网 测试技术
Llama-2 推理和微调的硬件要求总结:RTX 3080 就可以微调最小模型
大语言模型微调是指对已经预训练的大型语言模型(例如Llama-2,Falcon等)进行额外的训练,以使其适应特定任务或领域的需求。微调通常需要大量的计算资源,但是通过量化和Lora等方法,我们也可以在消费级的GPU上来微调测试,但是消费级GPU也无法承载比较大的模型,经过我的测试,7B的模型可以在3080(8G)上跑起来,这对于我们进行简单的研究是非常有帮助的,但是如果需要更深入的研究,还是需要专业的硬件。
1776 0