java ConcurrentHashMap 初识

“ConcurrentHashMap是一个线程安全的哈希表“,但是不允许key和value为空;

HashTable和ConcurrentHashMap都是线程安全的,但是HashTable是同步容器,ConcurrentHashMap是并发容器,采用了锁分离策略,在并发环境中,应多使

用ConcurrentHashMap,它具有非常好的并发性能,可以多个线程同时读写。而HashTable只能同时一个线程读写。

可以简单的把ConcurrentHashMap理解为多个HashMap组合,锁不是在ConcurrentHashMap上,而是在某个HashMap上。(segment机制)

从ConcurrentHashMap代码中可以看出,它引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的HashTable(segment),根据key.hashCode()来决定把key放到哪个HashTable中。

在ConcurrentHashMap中,就是把Map分成了N个Segment,put和get的时候,都是现根据key.hashCode()算出放到哪个Segment中:

学习自:http://blog.csdn.net/xuefeng0707/article/details/40834595

时间: 2025-01-04 10:54:40

java ConcurrentHashMap 初识的相关文章

Java ConcurrentHashMap Example and Iterator--转

原文地址:http://www.journaldev.com/122/java-concurrenthashmap-example-iterator#comment-27448 Today we will look into Java ConcurrentHashMap Example. If you are a Java Developer, I am sure that you must be aware of ConcurrentModificationException that com

Java ConcurrentHashMap存入引用对象时也是线程安全的

本人小白,看到资料说ConcurrentHashMap是线程安全的,get过程不需要加锁,put是线程安全的,推荐高并发时使用.但是本人不清楚是否该map中存入的引用类型对象,对象属性变化也是否线程安全的,看了很多资料,貌似都没说明这一点,所以写代码测试一下, package testConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap; /** * Created by xuzimian on 17-3-1. */ p

Java ConcurrentHashMap学习 —— HashMap Vs. ConcurrentHashMap Vs. SynchronizedMap – How a HashMap can be Synchronized in Java

HashMap is a very powerful data structure in Java. We use it everyday and almost in all applications. There are quite a few examples which I have written before on How to Implement Threadsafe cache, How to convert Hashmap to Arraylist? We used Hashma

java复习--初识java

1. 初识Java 1.什么是Java? Java是一门计算机语言,属于高级语言,是SUN公司(已经被Oracle公司收购)于1995年推出的一门高级语言. 为了使软件开发人员针对特定的市场进行开发,SUN公司将Java分为三个技术平台,分别是JavaSE.JavaEE.JavaME JavaSE(Java Platform Standard Edition)标准版,是为开发普通桌面应用程序提供的解决方案,JavaSE是三个平台中最核心的部分,JavaEE和JavaME都是从JavaSE的基础上

Java ConcurrentHashMap工作原理及实现

参考文章: ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) https://youzhixueyuan.com/concurrenthashmap.html 漫画:什么是ConcurrentHashMap(JDK1.7)? https://zhuanlan.zhihu.com/p/31614308 ConcurrentHashMap 原理解析(JDK1.8) https://www.jianshu.com/p/d10256f0ebea 探索 ConcurrentHas

Java设计模式----初识适配器模式

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3930271.html 联系方式:[email protected] [正文] 我们知道,Android中最重要也是最难用的UI控件就是ListView列表控件,而要想灵活运用它,则必须要用到适配器adapter,所以,我觉得还是很有必要来学习一下Java当中的适配器模式(不管以后能不能用到),毕竟

Java ConcurrentHashMap 的理解

HashMap是不安全的类,Java5.0前是使用了同步锁将HashMap给封装起来,但有个缺点,这样将把所有的访问都串行化,这样会严重降低并发性,当多个线程竞争容器的锁时,吞吐量将严重降低. ConcurrentHashMap并不是将每个方法都在同一个锁上同步,而是使用一种粒度更细的加锁进制来实现更大程度的共享,这种机制称为分段锁. 从Concurrent的源码中可以看出,读取操作是没有加锁的. 接下来看Map中node的值,可以从下图源码中看出有四个值, hash,key, val, nex

Java ConcurrentHashMap

通过分析Hashtable就知道,synchronized是针对整张Hash表的,即每次锁住整张表让线程独占, ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术.它使用了多个锁来控制对hash表的不同部分进行的修改. ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁.只要多个修改操作发生在不同的段上,它们就可以并发进行.有些方法需要跨段,比如size()和conta

对Java的初识

什么是计算机程序:    为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合.(简单来说就是记算机为完成某些功能生产的一系列有序指令集合); Java的来历:  Java的初期开发早在1991年就开始了.当时,在前Sun公司内,有一个称为Green的项目,在James Gosling的带领下,这个项目的工程师受命设计一种小型的计算机语言,用于机顶盒,家电控制芯片等消费类设备.最初,这种新语言被命名为"Oak"(James Gosling  办公室窗外的橡树名),但后来由