面试:实现线程安全HashMap,只用HashTable为什么不行

校校

11-13 浏览 5 收藏 0

试题:实现一个线程安全的HashMap,最简单是加synchronized变成HashTable,但面试官大概率不满意,原因是什么,还有哪些方案?

校校建议

HashTable是方法级别全量加锁,锁粒度大,并发性能差。

其他方案:

1、Collections.synchronizedMap,也是对象锁,性能依旧一般;

2、参考ConcurrentHashMap,分段锁/CAS+synchronized锁桶节点,降低锁粒度,提升并发读写性能。

面试重点讲锁粒度的取舍。