为什么ConcurrentHashMap可以这么快?
来源:互联网 发布:2015火的网络歌曲 编辑:程序博客网 时间:2024/04/29 00:14
已经知道HashMap为什么快的基础上,为什么保证同步的ConcurrentHashMap能保证与HashMap相差不大的性能?
答:减小锁粒度。ConcurrentHashMap将整个HashMap分解为若干个Segment,然后根据key的hashcode来判断数据存放在哪个Segment,从而只需对这个Segment加锁即可保证同步。
这种情况下,如果多线程访问的数据存在不同的Segment,就可以实现并发访问。
默认情况下,ConcurrentHashMap会有16个Segment。
唯一的问题是,当ConcurrentHashMap要统计全局信息时,如总元素个数,就需要获取所有锁才能得到结果。
总:减小锁粒度,能够提高并发度。
0 0
- 为什么ConcurrentHashMap可以这么快?
- 并发读写缓存实现机制(一):为什么ConcurrentHashMap可以这么快?
- 为什么TeamViewer可以拷贝的这么快
- epoll为什么这么快
- epoll为什么这么快
- epoll为什么这么快
- epoll为什么这么快
- epoll为什么这么快
- epoll为什么这么快
- epoll为什么这么快?
- epoll为什么这么快
- leveldb为什么这么快
- Ringbuffer为什么这么快?
- Redis为什么这么快?
- 为什么V8引擎这么快?
- 为什么V8引擎这么快
- 为什么V8引擎这么快
- 为什么JBossAS7 这么快
- scp 使用
- 在字符串中查找字符串
- linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间
- 一切成功源于积累——20140703 深深扎根于人性中的赌性
- Extjs4.2mvc+struts2+mybatis实现数据的增删改(CUD)
- 为什么ConcurrentHashMap可以这么快?
- OSG中圆锥的使用
- 网页游戏开发入门教程二(游戏模式+系统)
- 【安卓】imageView.scaleType取centerCrop后,再用padding时显示异常?
- Lua学习笔记2:变量
- Oracle 分割字符查询
- memcpy,strcpy,memset的函数实现
- DOS批处理中%cd%和%~dp0的区别
- linux下线程同步