1、典型回答
Hashtable 保证线程安全主要是通过给关键方法,例如 put 添加方法、remove 删除方法,添加 synchronized 加锁来保证线程安全的。
2、全面剖析
Hashtable 保证线程安全的方法实现非常简单粗暴,就是给关键方法整体添加 synchronized 来保证线程安全的,例如以下 put 源码实现:

还有 remove 万法的源码实现:

甚至是给查询方法 get 也加了 synchronized,如下源码所示:

所以,Hashtable 虽然实现了线程安全,但因为其简单粗暴的实现方式,导致 Hashtable 的性能很低,因此不推荐在实际工作中使用。
3、知识扩展
Hashtable 诞生于JDK 1.0,所以在后续的版本中推出了 HashMap (JDK 1.2 推出,单线程环境下使用)和ConcurrentHashMap (DK 1.5 推出,多线程环境下使用)来替代 Hashtable 的。
为什么 ConcurrentHashMap 性能比 Hashtable 效率高? 以及 ConcurrentHashMap 是如何保证线程安全的? 请参考: ConcurrentHashMap 为什么是线程安全的?-CSDN博客
一层一层递进,方得始终

![LeetCode每日一题[c++]-322.零钱兑换](https://img-blog.csdnimg.cn/direct/ac538a8588c3496eae163cacb0d1863e.png)

















