HashTable的底层分析

HashTable的底层原理

一:数据结构
和HashMap的数据结构是一样的

二:源码分析
HashTable的主要方法的源码和HashMap类似,最重要的区别是她所有的操作都是通过synchronized锁定保护的
只有获得了对应的锁才能进行后续的读写操作

三:HashTable和HashMap的区别

HashMap是非同步的,没有对读写等操作进行锁保护,所以是线程不安全的,在多线程场景下会出现数据不一致的问题。而HashTable是同步的,所有的读写等操作都进行了锁(synchronized)保护,在多线程环境下没有安全问题。但是锁保护也是有代价的,会对读写的效率产生较大影响。
HashMap结构中,是允许保存null的,Entry.key和Entry.value均可以为null。但是HashTable中是不允许保存null的。
HashMap的迭代器(Iterator)是fail-fast迭代器,但是Hashtable的迭代器(enumerator)不是fail-fast的。如果有其它线程对HashMap进行的添加/删除元素,将会抛出ConcurrentModificationException,但迭代器本身的remove方法移除元素则不会抛出异常。这条同样也是Enumeration和Iterator的区别。

作者:道可
链接:https://www.imooc.com/article/details/id/23015
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作

猜你喜欢

转载自blog.csdn.net/IM_MESSI/article/details/83279855