hashmap可以通过 Collections.synchronizedMap()获取一个线程安全的hashmap
代码如下:
HashMap hashMap=new HashMap(); Map<Object, Object> map=Collections.synchronizedMap(hashMap); map.put("name","liliheng"); System.out.println(map.get("name"));
优点:Collections.synchronizedMap()对map的一个封装返回一个线程安全的map,代码简单,但是是对方法进行加锁,锁的有效范围大 效率低。
hashmap还可以通过创建java.util.concurrent包下的ConcurrentHashMap对象来获取线程安全的map,代码如下:
ConcurrentHashMap<String,String> map=new ConcurrentHashMap<>(); map.put("name","liliheng"); System.out.println(map.get("name"));
优点:java.util.concurrent包下的ConcurrentHashMap 对hashmap进行拆分使用了新的锁机制 NonfairSync ,作用域小 效率高 缺点 代码比较繁琐