本篇内容介绍了“java中HashMap、Hashtable、ConcurrentHashMap的原理与区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
我们先进行Hashtable与HashMap的比对:
Hashtable与HashMap,他们之间的最大的区别在与Hashtable是线程安全的,而HashMap不是线程安全的,Hashtable是在java开始发布时就提供的键值映射的数据结构,而HashMap产生于JDK1.2。现在Hashtable基本已经失去了使用常见,究其原因第一可能是因为效率慢,但还有很大一部分原因估计是因为没有遵循驼峰命名。说实话,我这个强迫症看着他就非常难受!其他还有一些不同就是他们的父类也不一样,HashMap是继承自AbstractMap类,而Hashtable继承自Dictionary类,还有就是Hashtable无论是key还是value都不能为null,实现线程安全的时候是锁住整个Hashtable,效率超级低。果然,没人用的东西必然有不可取之处。
我们再来看看ConcurrentHashMap:
hashMap与ConcurrentHashMap,他们之间的区别其实跟hashtable与hashMap的区别差不多,也是ConcurrentHashMap是线程安全的,但是hashtable是使用的是synchronized关键字,而ConcurrentHashMap使用的是分段锁技术,他融合了hashMap与synchronized的优点,ConcurrentHashMap默认将hash表分为16个区间,正常的操作只需要使用到当前的区间,这样看来,原来只能一个线程进入的,现在却能16个线程同时进入,读线程几乎不受任何影响,写入才会锁定,性能的提升简直不可同日而语。
“java中HashMap、Hashtable、ConcurrentHashMap的原理与区别”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。