Java常见问题(八):HashMap和Hashtable的区别有哪些?

题目分析:作者正在学习中…

【答】

  1. HashMap没有考虑同步,是线程不安全的;Hashtable使用了synchronized关键字,是线程安全的;
  2. Hashmap允许key和value为null值的,在put的时候会调用hash()方法来计算key的hashcode值;HashTable键值对都不能为空,否则报NullPointerException(空指针异常

详解: link.

【题目拓展】

  1. 为什么HashMap是线程不安全,Hashtable是线程安全?
    HashMap线程不安全主要是考虑到了多线程环境下进行扩容可能会出现HashMap死循环。
    Hashtable线程安全是由于其内部实现在put和remove等方法上使用synchronized进行了同步,所以对单个方法的使用是线程安全的。

关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块

  1. 线程安全是什么意思?

  2. 为什么HashMap的key允许空值,而Hashtable却不允许?

发布了82 篇原创文章 · 获赞 0 · 访问量 905

猜你喜欢

转载自blog.csdn.net/weixin_43518038/article/details/105061320