MST

星途 面试题库

面试题:Java中多线程环境下为何要替代Hashtable

请简述在多线程环境下,Java的Hashtable存在哪些不足,导致需要寻找替代方案?
13.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  • 性能问题:Hashtable 对几乎所有的操作(如 get、put 等)都进行了同步,这意味着在多线程环境下,即使只有一个线程进行读操作,其他线程也不能进行写操作,从而导致严重的性能瓶颈。多个线程竞争锁,会使线程上下文切换频繁,降低系统整体的吞吐量。
  • 扩展性差:由于使用单一的锁来保护整个哈希表,随着并发访问量的增加,锁的竞争会愈发激烈。这种竞争无法通过增加更多的 CPU 核心来缓解,导致系统在高并发场景下扩展性不佳。
  • 死锁风险:虽然相对少见,但在复杂的多线程场景中,如果多个线程获取锁的顺序不一致,且互相等待对方释放锁,就可能会产生死锁。由于 Hashtable 的锁粒度大,涉及锁的操作较多,在复杂场景下死锁的潜在风险更高。