Man*_*ish 1 java concurrency concurrenthashmap
实践中的Java并发提到:
由返回的迭代器
ConcurrentHashMap比快速失败弱一致。弱一致性迭代器可以容忍并发修改,遍历在构造迭代器时存在的元素,并且可以(但不能保证)在构造迭代器后将对集合的修改反映出来。
ConcurrentHashMap将修改静态状态。唯一的事情是它不会抛出ConcurrentModificationException。请记住,Fail Fast迭代器会迭代原始集合。
相反,Fail Safe(又称弱一致性)迭代器遍历原始集合的副本。因此,对原始集合的任何更改都不会引起注意,这就是它保证缺少ConcurrentModificationExceptions的方式。
要回答您的问题:
如您所见,这是用例正确性和速度之间的权衡。
ConcurrentHashMap(CHM)利用多种技巧来增加访问的并发性。
MapEntry都存储在多个段之一中,每个段本身都是可以同时读取的哈希表(read方法不会阻塞)。concurrencyLevel(默认值为16)。段的数量决定了整个数据中的并发写入器的数量。片段之间条目的均等分布是通过附加的内部哈希算法来确保的。HashMapEntrys值可volatile确保在进行有争议的修改和后续读取时具有良好的颗粒一致性;每次读取均反映最近完成的更新| 归档时间: |
|
| 查看次数: |
1043 次 |
| 最近记录: |