多个线程正在访问ConcurrentHashMap
,在应用程序加载时会填充条目,此后很少在结构上进行修改。地图上的大多数操作都是读取或替换现有条目值。 非常很少创建或删除新条目,甚至每次都只有几条。
因此,通常仅在入门级预测争用。
我应该将concurrencyLevel
设置为什么?我在考虑1
的价值,因为地图几乎没有在结构上进行过修改,当发生这种情况时,我宁愿支付更大的内部结构大小的争用价格。
编辑:建议的链接回答了我的问题,但值得一提的是,虽然concurrencyLevel
为1就足够了,ConcurrentHashMap
仍允许对其进行并发读/写访问。 条目级别没有锁定,因为它具有volatile
读/写语义。