原文:面试题:ConcurrentHashMap实现线程安全的原理

在ConcurrentHashMap没有出现以前,jdk使用hashtable来实现线程安全,但是hashtable是将整个hash表锁住,所以效率很低下。 ConcurrentHashMap将数据分别放到多个Segment中,默认 个,每一个Segment中又包含了多个HashEntry列表数组, 对于一个key,需要经过三次hash操作,才能最终定位这个元素的位置,这三次hash分别为: 对于 ...

2018-05-06 20:23 0 964 推荐指数:

查看详情

ConcurrentHashMap实现线程安全原理

ConcurrentHashMap没有出现以前,jdk使用hashtable来实现线程安全,但是hashtable是将整个hash表锁住,所以效率很低下。 ConcurrentHashMap将数据分别放到多个Segment中,默认16个,每一个Segment中又包含了多个HashEntry列表 ...

Thu May 04 06:20:00 CST 2017 0 6496
面试题:Concurrenthashmap原理分析 有用

一、背景: 线程安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 效率低下的HashTable容器 HashTable容器 ...

Fri May 11 01:03:00 CST 2018 1 29262
concurrentHashMap面试题

面试题ConcurrentHashMap有哪些构造函数? ConcurrentHashMap使用什么技术来保证线程安全ConcurrentHashMap的get方法是否要加锁,为什么? ConcurrentHashMap迭代器是强一致性还是弱一致性?HashMap ...

Tue Nov 13 08:50:00 CST 2018 2 4101
ConcurrentHashMap面试题

1.JDK1.7版本的CurrentHashMap的实现原理 在JDK1.7中ConcurrentHashMap采用了数组+Segment+分段锁的方式实现。 1.Segment(分段锁) ConcurrentHashMap中的分段锁称为Segment,它即类似于HashMap的结构 ...

Sun Jul 07 01:48:00 CST 2019 0 3175
Java面试题-线程安全

1. 什么叫线程安全?servlet是线程安全吗? 答:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 或者说:一个类或者程序所提供的接口对于线程来说 ...

Tue Jun 02 01:57:00 CST 2015 0 2829
面试题:double和long为什么不是线程安全的?

Java虚拟机规范定义的许多规则中的一条:所有对基本类型的操作,除了某些对long类型和double类型的操作之外,都是原子级的。 目前的JVM(java虚拟机)都是将 32位作为原子操作,并非64位。 当线程把主存中的 long/double类型的值读到线程内存 ...

Wed Sep 16 04:10:00 CST 2020 0 618
Java面试题:Servlet是线程安全的吗?

Servlet不是线程安全的。 要解释为什么Servlet为什么不是线程安全的,需要了解Servlet容器(即Tomcat)使如何响应HTTP请求的。 当Tomcat接收到Client的HTTP请求时,Tomcat从线程池中取出一个线程,之后找到该请求对应的Servlet对象并进行初始化,之后 ...

Thu Dec 17 05:33:00 CST 2015 4 43449
面试必问之 ConcurrentHashMap 线程安全的具体实现方式

作者:炸鸡可乐 原文出处:www.pzblog.cn 一、摘要 在之前的集合文章中,我们了解到 HashMap 在多线程环境下操作可能会导致程序死循环的线上故障! 既然在多线程环境下不能使用 HashMap,那如果我们想在多线程环境下操作 map,该怎么操作呢? 想必阅读过小编 ...

Mon Dec 30 17:38:00 CST 2019 0 1143
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM