ConcurrentHashMap源码解读

原创 2015年11月18日 09:36:00
首先ConcurrentHashMap不允许key和value为null。

     ConcurrentHashMap之所以可以做到高并发是因为ConcurrentHashMap内部分成了多个segment(类似于子map),只会对segment加锁,并不会整个ConcurrentHashMap 加锁。CONCURRENCY_LEVEL默认分成16个segment。可以在构造函数中指定大小。大致逻辑如下,以put为例说明。
     根据hash值 算出key所在的segment(return segments [(hash >>> segmentShift) & segmentMask],其中segmentShift =log2(CONCURRENCY_LEVEL))。获得的segment类似于一个hashMap。然后在算出segment中key的位置(int index = hash & ( tab. length - 1);)。
     性能分析:最好能够初始化时估算好ConcurrentHashMap的大小,如果一开始设置容量太小,后续容易频发发生rehash,影响性能。

Java并发编程(五)ConcurrentHashMap的实现原理和源码分析

在Java1.5中,并发编程大师Doug Lea给我们带来了concurrent包,而该包中提供的ConcurrentHashMap是线程安全并且高效的HashMap,本节我们就来研究下Concurr...
  • itachi85
  • itachi85
  • 2016年07月21日 11:12
  • 6987

ConcurrentHashMap源码分析(JDK8版本)

注:本文源码是JDK8的版本,与之前的版本有较大差异 ConcurrentHashMap是conccurrent家族中的一个类,由于它可以高效地支持并发操作,以及被广泛使用,经典的开源框架Sprin...
  • u010723709
  • u010723709
  • 2015年08月26日 19:10
  • 19598

ConcurrentHashMap源码阅读以及底层实现的简单分析

ConcurrentHashMap HashMap 源码 底层实现 分析
  • qfycc92
  • qfycc92
  • 2015年05月02日 22:17
  • 1461

史上最详细的ConcurrentHashMap详解--源码分析

ps.本文所有源码都是基于jdk1.6ConcurrentHashMap的数据结构 话不多说,先上代码 final Segment[] segments; 可以看到Concur...
  • yan_wenliang
  • yan_wenliang
  • 2016年03月31日 19:20
  • 2122

HashMap和ConcurrentHashMap的区别,HashMap的底层源码。

HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
  • stephenxe
  • stephenxe
  • 2016年08月31日 17:00
  • 716

Java并发编程之ConcurrentHashMap原理分析

前言: 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。...
  • u010870518
  • u010870518
  • 2015年08月08日 12:16
  • 3042

ConcurrentHashMap的实现原理和源码分析

原文链接:http://www.jianshu.com/p/7f42ba895a64前言在Java1.5中,并发编程大师Doug Lea给我们带来了concurrent包,而该包中提供的Concurr...
  • u013991521
  • u013991521
  • 2016年11月04日 10:12
  • 405

jdk1.8并发容器:ConcurrentHashMap源码分析

下面第一部分转载自http://www.cnblogs.com/everSeeker/p/5601861.html,该博客对jdk1.7与jdk1.8的设计与性能作了部分比较,可作为参考学习。 先简...
  • sinat_35209943
  • sinat_35209943
  • 2016年11月04日 16:40
  • 466

深入理解ConcurrentHashMap之源码分析(JDK8版本)

ConcurrentHashMap是conccurrent家族中的一个类,由于它可以高效地支持并发操作,以及被广泛使用,经典的开源框架spring的底层数据结构就是使用ConcurrentHashMa...
  • mine_song
  • mine_song
  • 2017年04月12日 11:00
  • 955

利用ConcurrentHashMap和计数器实现锁

概述 在某些场景下,我们想让线程根据某些业务数据进行排队,简单代码如下:import java.util.ArrayList; import java.util.HashMap; import jav...
  • linsongbin1
  • linsongbin1
  • 2017年05月27日 13:51
  • 759
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ConcurrentHashMap源码解读
举报原因:
原因补充:

(最多只允许输入30个字)