其他分享
首页 > 其他分享> > 集合之ConcurrentHashMap & Hashtable

集合之ConcurrentHashMap & Hashtable

作者:互联网

 

 

HashMap在多线程环境下存在线程安全问题,那你一般都是怎么处理这种情况的?

一般在多线程的场景,可以使用好几种不同的方式去代替:

不过出于线程并发度的原因,一般舍弃前两者使用最后的ConcurrentHashMap,他的性能和效率明显高于前两者。

Collections.synchronizedMap是怎么实现线程安全的你有了解过么?

在SynchronizedMap内部维护了一个普通对象Map,还有排斥锁mutex,如图

 

 我们在调用这个方法的时候就需要传入一个Map,可以看到有两个构造器,如果你传入了mutex参数,则将对象排斥锁赋值为传入的对象。

如果没有,则将对象排斥锁赋值为this,即调用synchronizedMap的对象,就是上面的Map。

创建出synchronizedMap之后,再操作map的时候,就会对方法上锁,如图全是

标签:ConcurrentHashMap,HashMap,线程,Hashtable,key,集合,Segment,HashEntry
来源: https://www.cnblogs.com/Vincent-yuan/p/15178575.html