ConcurrentHashMap 有什么缺点吗?

2024-01-30

我需要一个可从多个线程访问的 HashMap。

有两个简单的选项,使用普通的 HashMap 并在其上同步,或者使用 ConcurrentHashMap。

由于 ConcurrentHashMap 不会阻止读取操作,因此它似乎更适合我的需求(几乎完全读取,几乎从不更新)。 另一方面,无论如何,我期望并发性非常低,因此不应该出现阻塞(只是管理锁的成本)。

如果这有影响的话,地图也会非常小(不到十个条目)。

与常规 HashMap 相比,读写操作的成本高出多少(我假设是这样)?或者,当存在中等水平的并发访问时,无论读/更新比率和大小如何,ConcurrentHashMap 总是更好吗?


另一方面,无论如何,我期望并发性非常低,因此不应该出现阻塞(只是管理锁的成本)。

获取和释放的成本不争辩Java 互斥锁(原始锁)很小。因此,如果您认为争用的可能性非常低,那么一个简单的方法HashMap可能是你最好的选择。

但这都是猜测。除非并且直到您实际分析了您的应用程序,否则花在推测性优化上的所有时间很可能都是浪费 (*) 时间。

* ... unless you have a really good intuition.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ConcurrentHashMap 有什么缺点吗? 的相关文章

随机推荐