【面经】HashMap和ConcurrentHashMap区别
HashMap和ConcurrentHashMap区别HashMap和ConcurrentHashMap的最大区别在于线程安全性。HashMap是非线程安全的。这意味着在多线程环境下如果多个线程同时修改HashMap可能会导致数据不一致甚至引发死循环等问题。ConcurrentHashMap是线程安全的它通过细粒度的锁机制来保证并发安全。在多线程环境下不同的线程可以同时对不同的部分进行修改而不会影响到其他线程。ConcurrentHashMap的线程安全是通过分段锁Segment Locks来实现的。具体来说ConcurrentHashMap会将Map分为多个段每个段有自己的锁这样线程可以在不同的段上进行并发操作不会发生阻塞。相比之下HashMap不进行任何的锁机制因此不支持并发修改。JDK1.7 版本底层是 数组链表 实现使用分段锁来保证线程安全它默认是将数组分成了16段同时给每一段来配一把锁因此最多只有16个线程去同时操作集合不同段。这样降低了并发操作时的锁竞争提高并发性能。JDK1.8 版本底层是数组链表红黑树在并发处理方面去掉了分段锁的设计而是使用 CAS synchronized 来实现一种更加细粒度的锁。从源码上看添加元素时首先会判断数组是否为空如果数组为空则使用CAS 来初始化数组。如果数组不为空则判断元素要存入的桶位置上是否为空如果桶位置上为空则使用CAS 设置桶上的头节点如果桶位置上不为空则使用synchronize 加锁锁住桶位置上的头节点遍历桶中的数据替换或新增节点到桶中并且再判断链表是否需要转为红黑树锁粒度细化锁的粒度从段缩小到单个桶链表/树的头节点减少竞争概率。JDK 1.8 的 ConcurrentHashMap 设计体现了无锁化编程和锁粒度细化的优化思想是 Java 并发容器的经典实现。为什么不全部用CAS或者全部用synchronized加锁实现线程安全为什么不同操作用不同的方式去保证线程安全我们可以看不同的方式中做的事情是什么CAS保证线程安全时它做的事情是初始化数组或者初始化头节点synchronized保证线程安全时它做的事情是遍历桶下的结点比较key是否相等然后再插入元素或者替换元素再判断链表是否转为红黑树所以可以看出是后者耗时更长CAS无锁就适合做短时间的任务因为如果任务执行时间长就会有线程不断的自旋尝试过度占用CPUsynchronized就适合做长时间、高竞争的任务加锁后其余线程会进入休眠不会占用CPU这是两者的特点不同适用的场景不同。这种设计体现了对不同场景的精细化控制是现代并发编程中“无锁优先锁为补充”思想的典型实践。

相关新闻

鸿蒙 ArkTS 实战:Zodiac Match 从星座匹配游戏到交互闭环完整解析

鸿蒙 ArkTS 实战:Zodiac Match 从星座匹配游戏到交互闭环完整解析

鸿蒙 ArkTS 实战:Zodiac Match 从星座匹配游戏到交互闭环完整解析 前言 Zodiac Match 是一个基于鸿蒙 ArkTS 编写的单页互动应用,核心围绕 姓名输入、星座计算、匹配文案和分享卡片 展开。项目没有依赖复杂服务端,也没有把逻辑拆散到多个页…

2026/11/12 19:49:23 阅读更多 →
C++笔记之IO相关概念详解

C++笔记之IO相关概念详解

C++笔记之IO相关概念详解 code review! 文章目录 C++笔记之IO相关概念详解 一、什么是IO 二、IO包括哪些操作或场景 三、IO与性能的关系 四、哪些操作或场景不是IO 五、哪些操作不是IO却也和性能强相关 总结要点(面试话术) 一、什么是IO IO(Input/Output,输入输出)是指程…

2026/11/8 11:25:35 阅读更多 →
iOS集成支付宝支付全流程解析与最佳实践

iOS集成支付宝支付全流程解析与最佳实践

1. iOS项目集成支付宝支付的核心流程在iOS应用中集成支付宝支付功能,是移动开发中常见的商业化需求。作为国内主流支付方式之一,支付宝SDK为开发者提供了完整的移动支付解决方案。不同于简单的API调用,实际集成过程中涉及证书配置、依赖管理、…

2026/11/11 2:59:13 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻