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