我创建了一个具有以下值的`ConcurrentHashMap:

ConcurrentHashMap<String,String> concurrentHashMap = new ConcurrentHashMap<>(10,.9F,1);


以上表示只有1个线程可以在给定的时间点更新地图。如果是这种情况,那么我可以说它在并发的情况下将像HashMap一样工作。在给定的时间点将仅执行一次写操作。

我的理解正确吗,或者我在这里缺少什么?

最佳答案

concurrencyLevel只是一个提示,有助于调整内部数据结构的大小。不能保证1会是实际使用的值,而不是像常规的HashMap那样表现,这可能意味着如果您实际上从多个线程中使用它,效率将降低。

从Javadoc:


  使用比您需要的高得多的值会浪费空间和时间,而低得多的值会导致线程争用。

10-04 23:12
查看更多