HASHMAP 问题

问题描述

Astructuralmodificationisanyoperation*thataddsordeletesoneormoremappings;merelychangingthevalue*associatedwithakeythataninstancealreadycontainsisnota*structuralmodification.这句话意思是不是只改变VALUE,就可以多线程访问了?

解决方案

解决方案二:
这个是讲HashMap什么时候是结构上的改变:添加删除键值对是结构性的改变。修改一个已经存在的键对应的值,不是结构上的改变。这里没有提多线程的问题。HashMap是非线程安全的,如果想多线程安全的使用HashMap,使用java.util.concurrent.ConcurrentHashMap<K,V>从HashMap到ConcurrentHashMap:Mapmap=Collections.synchronizedMap(hashMap);
解决方案三:
结构上修改的操作指添加或删除一个或多个映射;仅仅改变该值带key,一个实例已经包含关联不是结构改造。
解决方案四:
<p><strong>Notethatthisimplementationisnotsynchronized.</strong>*Ifmultiplethreadsaccessahashmapconcurrently,andatleastoneof*thethreadsmodifiesthemapstructurally,it<i>must</i>be*synchronizedexternally.(Astructuralmodificationisanyoperation*thataddsordeletesoneormoremappings;merelychangingthevalue*associatedwithakeythataninstancealreadycontainsisnota*structuralmodification.)Thisistypicallyaccomplishedby*synchronizingonsomeobjectthatnaturallyencapsulatesthemap.两位兄弟atleastoneofthethreadsmodifiesthemapstructurally,itmustbesynchronizedexternally.至少一个线程结构上修改了MAP,必须从外部同步。

时间: 2024-09-28 09:03:21

HASHMAP 问题的相关文章

java-jquery解析xml怎样把结果存到list或者hashmap最后生成excel表格

问题描述 jquery解析xml怎样把结果存到list或者hashmap最后生成excel表格 $.ajax({ type:""GET"" dataType:""XML"" timeout: 1000 //设定超时 cache: false //禁用缓存 url:""${pageContext.request.contextPath}/xml/from.xml"" success:fun

不正当使用HashMap导致cpu 100%的问题追究

因最近hashmap误用引起的死循环又发生了一些案例,左耳朵浩子写了一篇blog 疫苗:Java HashMap的死循环,看了一下,大家的分析如出一辙.这篇blog也是好几年前写的了,之前在平台技术部的博客上贴过,随着组织结构的调整,那个博客可能不再维护,把这篇文章在这儿也保存一下. 李鹏同学在blog里写了篇关于HashMap死锁模拟的文章: http://blog.csdn.net/madding/archive/2010/08/25/5838477.aspx 做个纠正,那个不是死锁问题,而

[Java] TreeMap、HashMap、LindedHashMap的区别

版权声明:请尊重个人劳动成果,转载注明出处,谢谢! Map家族的继承关系 1 . TreeMap TreeMap实现SortMap接口,能够把它保存的记录根据键排序, 默认是按键值的升序排序(自然顺序),也可以指定排序的比较器( Comparator ),当用Iterator 遍历TreeMap时,得到的记录是排过序的. 注意,此实现不是同步的.如果多个线程同时访问一个映射,则其必须 外部同步.这一般是通过对自然封装该映射的对象执行同步操作来完成的.如果不存在这样的对象,则应该使用 Collec

javascript hashmap:HashMap的JavaScript实现

function hashMap(){/*** Map大小*/var size = 0;/*** 容器默认最大长度*/var length = 256var loadfactor = 0.75;/*** 质数*/var prime = 1000000;/*** 对象*/var table = new Array(length);/*** 设置构建Hash质数* @param {Object} p*/this.setPrime = function(p){this.prime = p;}/***

Java中对HashMap的深度分析

在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键.由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问题.找遍了大大小小的论坛,也把<Java 虚拟机规范>,<apress,.java.collections.(2001),.bm.ocr.6.0.shareconnector>,和<Thinking in Java>翻了也找不到很好的答案,于是一气之下把JDK的 src 解压出来研究,扩然开朗,遂写此文,跟大家分享感

Java的数组(Array)、Vector、ArrayList、HashMap的异同

数组   array(数组)和Vector是十分相似的Java构件(constructs),两者全然不同,在选择使用时应根据各自的功能来确定. 1.数组:Java arrays的元素个数不能下标越界,从很大程度上保证了Java程序的安全性,而其他一些语言出现这一问题时常导致灾难性的后果.        Array可以存放Object和基本数据类型,但创建时必须指定数组的大小,并不能再改变.值得注意的是:当Array中的某一元素存放的是Objrct reference 时,Java不会调用默认的构

Java中对HashMap的深度分析与比较

比较 在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键.由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问题.找遍了大大小小的论坛,也把<Java 虚拟机规范>,<apress,.java.collections.(2001),.bm.ocr.6.0.shareconnector>,和<Thinking in Java>翻了也找不到很好的答案,于是一气之下把JDK的 src 解压出来研究,扩然开朗,遂写此文,跟大家

一个简单的HashMap C语言实现

用C语言实现一个简单实用的hashmap,具有一定的实际意义.尤其我们不想使用STL里面的map<...>类的时候.我实现的这个hashmap,用来做key---value的映射,key必须是有效的字符串,value是调用者分配的任意类型的数据.这个hashmap适合在一些简单的场合下,消耗极少的资源. 首先定义头文件如下: /* * hashmap.h * Generic hash map: key(string)-value(any type). * cheungmine * Sep. 2

Java集合源码剖析:HashMap源码剖析

HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap. HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆. HashMap源码剖析 HashMap的源码如下(加入了比较详细的注释): pac

Java集合学习(十) HashMap详细介绍(源码解析)和使用示例

这一章,我们对HashMap进行学习. 我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap. 第1部分 HashMap介绍 HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射. HashMap 继承于AbstractMap,实现了Map.Cloneable.java.io.Serializable接口. HashMap 的实现不是同步的,这意味着它不是线程安全的.它的key.value都可以为null.此外