面试官:说一下currenthashmap怎么保证并发正确

简介: 面试官:说一下currenthashmap怎么保证并发正确

JDK1.7 的concurrentHashMap

结构:JDK1.7版本的concurrentHashMap和JDK1.7的hashmap的结构的区别就是加上了一层segment数组,当然加上这个数组也是为了并发时候的安全性,所以其结构就是segment数组+数组+链表的结构,每个segment中的有一个数组+链表的结构,初始的大小为16,阈值也是0.75。

安全机制:

对于jdk1.7的concurrenthashmap的安全性,是通过synchronized加在segment数组上来保证的,也就是我们常说的段锁,对于一个段加锁之后,这个段上其他的节点就不能被操作了,但是一个段上加锁之后,并不影响其他段的操作,所以就在安全的环境下大大提高了并发性。

 

JDK1.8的concurrentHashMap

结构和安全机制

JDK1.8版本的concurrentHashMap和JDK1.8的hashmap的结构的区别就是使用了synchronized和CAS机制,当然加上synchronized和CAS机制也是为了并发时候的安全性,所以主要是操作的时候加上了锁的影响,在添加数据的时候会先对指定的节点加上Synchronized锁,然后在进行CAS方式插入数据,因为Synchronized锁的是数组中的一个几点而不是整个数组,所以并发也很高,初始的大小为16,阈值也是0.75。

注意:JDK1.8的concurrentHashMap扩容特点:多线程并行扩容,因为synchronized所得是单个节点,所以可以多个线程并行扩容,暴增安全的前提下提高了扩容的速度,其次统计数量的时候如果并发较高可以使用数组统计之后,把数组中的都加到一起。

相关文章
|
7天前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
|
3月前
|
并行计算 数据挖掘 大数据
[go 面试] 并行与并发的区别及应用场景解析
[go 面试] 并行与并发的区别及应用场景解析
|
1月前
|
Java 调度 Android开发
Android面试题之Kotlin中async 和 await实现并发的原理和面试总结
本文首发于公众号“AntDream”,详细解析了Kotlin协程中`async`与`await`的原理及其非阻塞特性,并提供了相关面试题及答案。协程作为轻量级线程,由Kotlin运行时库管理,`async`用于启动协程并返回`Deferred`对象,`await`则用于等待该对象完成并获取结果。文章还探讨了协程与传统线程的区别,并展示了如何取消协程任务及正确释放资源。
23 0
|
3月前
|
Java 程序员 调度
面试准备-并发
面试准备-并发
|
3月前
|
消息中间件 Java 中间件
复盘女朋友面试4个月的并发面试题
该文章主要复盘了关于并发的面试题,包括线程池的使用场景、原理、参数合理化设置,以及ThreadLocal、volatile、synchronized关键字的使用场景和原理,还介绍了juc并发工具包中aqs的原理,强调在面试中要将自己理解的点与面试官讲透。
复盘女朋友面试4个月的并发面试题
|
3月前
|
JavaScript 前端开发 Java
面试官:假如有几十个请求,如何去控制并发?
面试官:假如有几十个请求,如何去控制并发?
|
3月前
|
安全 Go 调度
[go 面试] 深入理解并发控制:掌握锁的精髓
[go 面试] 深入理解并发控制:掌握锁的精髓
|
3月前
|
算法 Go 数据库
[go 面试] 并发与数据一致性:事务的保障
[go 面试] 并发与数据一致性:事务的保障
|
3月前
|
NoSQL Go API
[go 面试] 为并发加锁:保障数据一致性(分布式锁)
[go 面试] 为并发加锁:保障数据一致性(分布式锁)
|
4月前
|
设计模式 安全 Java
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
78 1