“我被问懵了!这两者不都是线程安全的吗?但面试官的微笑让我不安……”
嗨,大家好,我是小米,一个热爱分享技术的老码农(虽然不老,31岁正当年!)。今天我们来聊聊 Java 面试中一道高频问题:SynchronizedMap 和 ConcurrentHashMap 有什么区别?
这道题看似简单,但其实暗藏玄机,一不小心就容易掉坑。今天我们就通过一个故事 + 源码剖析 + 性能对比,彻底搞清楚它们的区别。
故事开场:面试现场的灵魂拷问
某天,小王(5年Java开发经验)去参加阿里社招面试。
面试官看着简历,笑了笑:“你写过高并发项目?”
小王点头:“是的,我们系统日均 QPS 过百万,主要用 HashMap 处理缓存。”
面试官挑了挑眉:“哦?那你能说说 SynchronizedMap 和 ConcurrentHashMap 的区别吗?”
小王:“呃……它们都能保证线程安全……”
面试官:“嗯?那如果并发度很高,你会选哪个?”
小王开始紧张了:“这个……它们……嗯……”
面试官一笑:“好吧,我们换个问题……”
小王当场泪目,回去后痛定思痛,决定彻底搞懂这两个玩意儿!