java中HashMap、Hashtable、ConcurrentHashMap的原理与区别

本篇内容介绍了“java中HashMap、Hashtable、ConcurrentHashMap的原理与区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

兴宁网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联公司成立与2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

我们先进行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的原理与区别”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


当前标题:java中HashMap、Hashtable、ConcurrentHashMap的原理与区别
网站URL:http://hbruida.cn/article/ggoscj.html