java hashmap多线程put被hang 的解决

初始化几十万数据库来的时候,我们一般用多线程访问数据库,多线程初始化。
比如map对类似手机归属地的缓存映射,一开始就是用的hashMAP,发现在初始30万的数据一直停在那里过了半小时还没完,最先以为是查询库的问题,毕竟量多,后来把map的put操作去掉后,居然只用了20秒(机器差),后来发现就是hashmap导至死循环。具体原因,百度查。
但是可以用ConcurrentHashMap解决问题。hashtable会锁住整个map结构,性能稍微差。所以没采用。还有如果知道MAP的长度的情况下,最好将其他初始化一个长度,因load系数与map长度的一个关系值(默认是0.75),初始100,那它可以装载的元素个数最多75个。

猜你喜欢

转载自ysa198584.iteye.com/blog/2215128