JAVA知识点-弃用Hashtable的原因
本文最后更新于:May 10, 2022 am
积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。
目录
首先需要注意的是:不是HashTable,而是Hashtable!!! 注意大小写区分。
命名原因
不符合驼峰命名规则。
Hashtable 是在 Java 1.0 的时候创建的,而集合的统一规范命名是在后来的 Java 2 开始约定的,当时其他一部分集合类的发布构成了新的集合框架。至于为什么不在后面的 JDK 版本中修复它呢?可能是为了考虑兼容使用 JDK 老版本的系统吧。所以就将错就错封存在了 JDK,直到现在 JDK 11 了也还没有修复或者考虑删除它。
继承的父类
HashMap是继承自AbstractMap类,而Hashtable是继承自Dictionary类。Dictionary类是一个已经被废弃的类(见其源码中的注释)。父类都被废弃,自然而然也没人用它的子类Hashtable了。
效率问题
HashMap是非线程安全的,Hashtable是线程安全的。
在单线程中,无需做线程控制,HashMap运行效率更高;在多线程中,synchronized会造成线程饥饿,死锁,可以用concurrentHashMap替代。
本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/c5d7a0af.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!