我正在浏览并发哈希映射,据我所知,它们默认分为16个部分。每个部分都有自己的键值对。如果一个线程想要锁定一个键值对,它将锁定整个段。 (如果我错了,请纠正我)。现在在link中提到了当作家较少时,chm是好的。我想知道我们是否增加了段的数量,我的意思是使它与数字键值对相当,不能为在同一个CHM上运行的大量编写器线程创建并发性。此外,由于CHM中存在锁定,因此关于内存消耗的成本是多少。
由于
Jayendra
答案 0 :(得分:3)
如果我正确理解了您的问题,则会在JavaDoc:
中正确回答更新操作之间允许的并发性由 可选的concurrencyLevel构造函数参数(默认为16),即 用作内部尺寸的提示。该表是内部的 分区以尝试允许指示的并发数 没有争用的更新。因为哈希表中的位置是 基本上是随机的,实际的并发性会有所不同。理想情况下,你 应该选择一个值来容纳尽可能多的线程 同时修改表。使用明显高于的值 你需要可以浪费空间和时间,而价值可以低得多 导致线程争用。但是过高估计和低估了内部 一个数量级通常不会产生明显的影响。一个 当知道只有一个线程时,一个值是合适的 修改,所有其他人只会阅读。此外,调整此或任何其他 哈希表的类型是一个相对较慢的操作,所以,如果可能的话, 最好提供预期表格大小的估计值 构造