大多数javaer都知道HashMap是线程不安锾哩菸谷全的,多线程环境下数据可能会发生错乱,一定要谨慎使用。这个结论是没选多萑唢错,可是HashMap的线程不安全远远不是数据脏读这么简单,它还有可能会发生死锁,造成内存飙升100%的问题,情况十分严重,我们一般会是使用ConcurrentHashMap来代替hashMap在多线程情况下的使用,如果硬要使用,小编提供了以下几个方法。
工具/原料
eclipse
方法/步骤
1、首先我们来看一下怎么个模拟多线程同时操作同一个hashMap的代码
2、多线程下操作同一个hashMap会出现的报错
3、方式1:使用锁的机制去保证HashMap在多线程中的操作(不推荐使用,编码太恶心了)
4、方式2:在多线程中使用Collections.synchronizedMap(Mapmap)方法,可以将HashMap变成一个同步的容器(拥有锁限制的同步机制)
5、方式3:锂淅铄旰直接使用并发包下的ConcurrentHashMap,concurrentHashMap的put方法是加锁的,它是同步的(采用了ReentrantLock可重入锁),可以保证线程安全