文档章节

HashMap和ConcurrentHashMap的区别

G
 Garphy
发布于 08/23 14:19
字数 215
阅读 13
收藏 0

为了线程安全,ConcurrentHashMap 引入了一个 “分段锁” 的概念。具体可以理解把一个大的 map 拆分成 N 个小的 Map 。最后再根据 key.hashcode( )来决定放到哪一个 hashmap 中去。

hashmap 本质是数组+链表,根据 key.hashcode( ) 计算出数组对应下标。如果多个 key 对应同一个下标,用一个链表串起来,新数据在前面。

ConcurrentHashMap :在 hashmap 基础上,ConcurrentHashMap 将数据分解成多个 segment (默认 16 个),每次操作对 segment 加锁,避免多线程锁的几率,提高并发效率。

 

 

© 著作权归作者所有

G
粉丝 0
博文 146
码字总数 62977
作品 0
私信 提问
Java容器源码分析-高并发处理Map-ConcurrentHashMap和HashTable

上一章节,分析了常用的Map集合,随着互联网多线程并发的场景越来越多,原始的数据结构已经无法满足真是的场景需求,所以这种线程安全的集合就显得非常重要。这里介绍一下ConcurrentHashMap...

贾浩v
2017/10/19
44
0
Java面试基础篇——第六篇:常见Map类的区别

常见的map类有: HashMap, ConcurrentHashMap (Jdk1.8) , LinkedHashMap, TreeMap, Hashtable。 其中我们最常用的莫过于HashMap, 和并发情况下使用的ConcurrentHashMap了,它们的主要区别就在...

developlee的潇洒人生
2018/07/19
349
0
一文读懂JDK7,8,9的hashmap,hashtable,concurrenthashmap及他们的区别

内容和标题一样长哦,人家写了好久的。如无特别指明,内容对应的源码是jdk1.7(后面会和1.8对比) 1:hashmap简介(如下,数组-链表形式) HashMap的存储结构 图中,紫色部分即代表哈希表,也...

java进阶架构师
2018/10/28
0
0
Java常见问题总结

1、Object有哪些公共方法? 答:clone(),equals(),hashCode(),wait(), getClass(),finalize(),notify(),notifyAll(),toString() 2、Object中finalize()的作用? 答:用于清理。final...

阿阿阿阿阿局
2016/08/06
59
0
Java中HashMap和HashTable区别

前几天被一家公司电面的时候被问到HashMap和HashTable的区别,当时就懵逼了,hashTable是个啥?从来没用过啊,于是电面完之后马上google了一把,这回涨姿势了; HashMap和HashTable同属于Jav...

Panshuyang
2016/03/23
240
0

没有更多内容

加载失败,请刷新页面

加载更多

会用python把linux命令写一遍的人,进大厂有多容易?

看过这篇《2000字谏言,给那些想学Python的人,建议收藏后细看!》的读者应该都对一个命令有点印象吧?没错,就是 linux 中经常会用到的 ls 命令。 文章中我就提到如何提升自己的 python 能力...

上海小胖
19分钟前
6
0
HashMap的特性

一、hashmap数据结构:哈希表结构:数组+链表 hashmap调用默认构造方法会产生一个默认底层是长度为16的Entry数组,首先调用key的hasCode()方法来得到一个整数, int hash = hash(key.hashCode...

GGbird
19分钟前
16
0
第五章 spring-connet之Imports注解来龙去脉

前言 imports是一个在spring体系里非常重要的注解,基本每个Enable开头的注解必然有一个import注解。接下来我们深入研究下import的作用。看小节的同学建议先取看PostProcessorRegistrationDe...

鸟菜啊
23分钟前
4
0
CentOS部署Harbor镜像仓库

关于Harbor Harbor是用于存储和分发Docker镜像的镜像仓库服务,相比Docker Registry,Harbor在安全、标识、管理等方面做了增强,更适合企业使用; 官方网站:https://goharbor.io/ 官方开源:...

程序员欣宸
27分钟前
5
0
JavaScript调试必会的8个console方法

每个JavaScript开发者都用过console.log()来调试程序,但实际上Console对象还提供了很多其他方法可以提高调试效率。本文将介绍8个有趣的Console方法,即使JavaScript老手也不一定知道! 1、c...

汇智网教程
49分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部