hashmap是线程安全的吗
hashmap 为什么线程不安全
一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题?HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。javadoc中关于hash...
hashmap是线程安全的吗
2016\/10\/18 | 分类: 基础技术 | 6 条评论 | 标签: HASHMAP, 并发 分享到:26 原文出处: Hosee HashMap的原理以及如何实现,之前在JDK7与JDK8中HashMap的实现中已经说明了。那么,为什么说HashMap是线程不安全的呢?它在多线程环境下,会发生什么情况呢?1. resize死循环 我们都知道HashMap...
hashmap为什么是线程不安全的
首先需要强调一点,HashMap的线程不安全体现在会造成死循环、数据丢失、数据覆盖这些问题。其中死循环和数据丢失是在JDK1.7中出现的问题,在JDK1.8中已经得到解决,然而1.8中仍会有数据覆盖这样的问题。HashMap的线程不安全主要是发生在扩容函数中,即根源是在transfer函数中,JDK1.7中HashMap的transfer...
hashmap为什么线程不安全
hashmap在jdk1.7多线程环境下HashMap容易出现死循环所以线程不安全。hashmap是基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get和put)提供稳定的性能。迭代collection视图所需的时间与HashMap实例的...
HashMap和Hashtable区别?
两者最主要的区别在于hashtable是线程安全,而hashmap则非线程安全。
HashMap、ConcurrentHashMap、HashTable的区别
除了线程安全外,他们之间还有一些细微的不同,本文会介绍到。顺便说说, HashMap 和 ConcurrentHashMap 还有 ConcurrentHashMap 和 Hashtable 两者之间的区别在Java面试中经常出现,特别是高级Java程序员。在这部分,我们会看到更多关于 HashMap 和 ConcurrentHashMap 的细节和对比它们之间的参数比如线程安全...
HashMap线程不安全?ConcurrentHashMap线程安全?为啥呢?
JDK1.8使用的是数组+链表+红黑树的数据结构(当链表的深度达到8的时候,也就是默认阈值,就会自动扩容把链表转成红黑树的数据结构来把时间复杂度从O(n)变成O(nlogN)提高了效率)1.HashMap不是线程安全的,而ConcurrentHashMap是线程安全的。2.ConcurrentHashMap采用锁分段技术, 将整个Hash桶进行了...
HashMap是线程不安全的 哪怕 1.8 后 不会死循环 还是有数据丢失 污染等...
说hashmap线程不安全指的是把它当容器,并发读写会出现问题 可以用concurrenthashmap,这个是线程安全的
java中的HashMap类是做什么用的?
java中HashMap类是用来存储具有键值对特征的数据。例如现在需要按照员工号来存储大量的员工信息,那么就可以使用HashMap,将员工号作为键,员工对象作为值来存储到HashMap中,其中使用HashMap时需要注意,HashMap是线程不同步的,多线程使用时,需要注意;并且HashMap允许null值作为键和值。
hashmap是线程安全还是不安全的
因为String是不可变的,也是final的,而且已经重写了equals()和hashCode()方法了。其他的wrapper类也有这个特点。不可变性是必要的,因为为了要计算hashCode(),就要防止键值改变,如果键值在放入时和获取时返回不同的hashcode的话,那么就不能从HashMap中找到你想要的对象。不可变性还有其他的优点如线程安全...
河口区复方回答: HashMap非线程安全 HashTable是线程安全的 如果要HashMap线程安全 自己手动加上synchronization实现同步
冉类18993646657问: hashmap 是线程安全的吗 - ?
河口区复方回答: Hashtable. 1 HashMap不是线程安全的hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值.HashMap允许null key和null value,而hashtable不允许.2 HashTable...
冉类18993646657问: hashmap是线程安全还是不安全的 - ?
河口区复方回答: String, Interger这样的wrapper类作为HashMap的键是再适合不过了,而且String最为常用.因为String是不可变的,也是final的,而且已经重写了equals()和hashCode()方法了.其他的wrapper类也有这个特点.不可变性是必要的,因为为了...
冉类18993646657问: 问一个问题,JDK自带的HashMap或者LinkedHashMap是线程安全的吗 - ?
河口区复方回答: 老版的jdk中的map结合都是线程安全的,新的,JDK自带的HashMap或者LinkedHashMap是线程安全都是不安全的,需要自己去处理安全问题
冉类18993646657问: 如何线程安全的使用HashMap - ?
河口区复方回答: 在周二面试时,一面的面试官有问到HashMap是否是线程安全的,如何在线程安全的前提下使用HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap和synchronized Map的原理和区别.当时有些紧张只是简单说了下HashMap不是线...
冉类18993646657问: Java中HashMap和TreeMap的区别深入理解 - ?
河口区复方回答: HashMap:数组方式存储key/value,线程非安全,允许null作为key和value,key不可以重复,value允许重复,不保证元素迭代顺序是按照插入时的顺序,key的hash值是先计算key的hashcode值,然后再进行计算,每次容量扩容会重新计算所以key...
冉类18993646657问: java学习中Hashtable与HashMap的区别? - ?
河口区复方回答: HashMap不是线程安全的,HashTable是线程安全.HashMap允许空(null)的键和值(key),HashTable则不允许.HashMap性能优于Hashtable.Map1.Map是一个以键值对存储的接口.Map下有两个具体的实现,分别是HashMap和HashTable.2.HashMap是线程非安全的,HashTable是线程安全的,所以HashMap的效率高于HashTable.3.HashMap允许键或值为空,而HashTable不允许键或值为空.
冉类18993646657问: hashmap为什么是线程不安全的 - ?
河口区复方回答: HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点.对链表而言,新加入的节点会从头结点加入.javadoc中关于hashmap的一段描述如下:此实现不是同步的....
冉类18993646657问: hashmap 为什么线程不安全 - ?
河口区复方回答: 有2种办法让HashMap线程安全,分别如下:方法一:通过Collections.synchronizedMap()返回一个新的Map,这个新的map就是线程安全的. 这个要求大家习惯基于接口编程,因为返回的并不是HashMap,而是一个Map的实现.方法二:重新改写了HashMap,具体的可以查看java.util.concurrent.ConcurrentHashMap. 这个方法比方法一有了很大的改进.