类注释 线程不安全,出现并发问题会 fail fast,并发需要用 Collections.synchronizedMap 包裹起来 顺序不按照插入顺序 hashcode 分散均匀很重要 hashcode 分散不均匀,Compareble 来补充 capacity、load factor 参数很重要 ...
分类:
其他好文 时间:
2019-02-26 00:55:39
阅读次数:
131
前言我们平常使用的很多的是HashMap,但是在多线程并发情况下是非安全的,虽然HashTable和Collections.synchronizedMap(hashMap)能够解决并发安全问题,但是这两种方式都是对整个hash表进行读写加锁,其性能可想而知。所以出现了CurrentHashMap解决并发和性能问题。JDK7\JDK8中因为实现有很大差别,所以我们需要深入去进行对比,分析两个版本分别
分类:
其他好文 时间:
2018-10-31 23:24:42
阅读次数:
178
HashMap不是线程安全的,往往在写程序时需要通过一些方法来回避.其实JDK原生的提供了2种方法让HashMap支持线程安全.
方法一:通过Collections.synchronizedMap()返回一个新的Map,这个新的map就是线程安全的. 这个要求大家习惯基于接口编程,因为返回的并不是HashMap,而是一个Map的实现.
方法二:重新改写了HashMap,具体的可以查看java.util.concurrent.ConcurrentHashMap. 这个方法比方法一有了很大的改进.
下面对这2中实现方法从各个角度进行分析和比较.
实现原理
锁机制的不同
如何得到/释放锁
优缺点
1)实现原理
方法一原理:
通过Collections.synchronizedMap()来封装所有不安全的HashMap的方法,就连toString, hashCode都进行了封装. 封装的关键点有2处,1)使用了经典的synchronized来进行互斥, 2)使用了代理模式new了一个新的类,这个类同样实现了Map接口.
HashMap
分类:
编程语言 时间:
2018-09-13 18:37:48
阅读次数:
210
1.Hashtable是线程安全,HashMap是非线程安全 HashMap的性能会高于Hashtable,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个线程安全的集合(Collec ...
分类:
其他好文 时间:
2018-08-31 19:36:50
阅读次数:
197
0.出现时间? HashMap是jdk1.2 Hashtable是jdk1.1 HashMap出现得晚 1.线程安全? HashMap线程不安全 Collections.synchronizedMap(map); Hashtable线程安全 synchronized 2.null key? Hash ...
分类:
其他好文 时间:
2018-08-26 11:54:43
阅读次数:
150
LRU:Least Recently used 最近最少使用 1.使用LinkedHashMap实现 inheritance实现方式 继承map类 可以使用Collections.synchronizedMap方式实现线程安全的操作 2、LinkedHashMap 使用delegation方式实现 ...
分类:
其他好文 时间:
2018-08-18 21:18:33
阅读次数:
196
1、线程安全的HashMap 如果需要一个线程安全的HashMap ,可以使用集合工具类的synchronizedMap(Map<K,V> m)方法实现, 进到方法里面, 它返回一个内部类,进入内部类 发现它是用的代理的方法来实现的,所有功能全都由传进来的Map,也就是m实现,它只负责给方法加锁。如 ...
分类:
编程语言 时间:
2018-08-03 16:28:13
阅读次数:
136
那么要如何保证HashMap的线程安全呢? 方法有很多,比如使用Hashtable或者Collections.synchronizedMap,但是这两位选手都有一个共同的问题:性能。因为不管是读还是写操作,他们都会给整个集合上锁,导致同一时间的其他操作被阻塞。 虽然Hashtable和Collect ...
分类:
其他好文 时间:
2018-05-25 22:03:43
阅读次数:
143
1、HashMap与HashTable的区别 HashMap允许key和value为null; HashMap是非同步的,线程不安全,也可以通过Collections.synchronizedMap()方法来得到一个同步的HashMap HashMap存取速度更快,效率高 HashMap去掉了Has ...
分类:
移动开发 时间:
2018-05-18 19:27:47
阅读次数:
211