【发布时间】:2013-04-07 10:51:16
【问题描述】:
当我在测验中问到以下问题时,我对自己的理解有些困惑:
1)ConcurrentHashMap :据我了解,没有锁可以从此映射中获取值(对应于键)。
问题是:如果这是真的,假设 t1 正在写入(通过锁定 Segment/bucket)并且 t2 尝试读取相同的内容,t2 将无法获得正确的值,因此与 t2 的值不一致
2)HashMap:据我了解,在将元素添加到 hashbucket 之前,hashvalue H 计算为 key 的 hashcode%16 (给出从 0 到 15 的值) (key.hashcode()) 然后添加到哈希值为H的桶中
注意:有 16 个桶(默认实现),代表 ArrayList 的 LinkedList
|0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |10 | 11 |12 |13 |14 |15 |
ArrayList at 2000(内存地址)
你可以说这是Segmentation in ConcurrentHashMap、Regarding internal working of concurrent hashmap、HashMap or ConcurrentHashMap at Java Controllers?等的重复。但我需要理解怀疑。几个链接/博客可以很好地解释对我有用。谢谢
【问题讨论】:
-
别搞砸了。你会在这里得到更好的理解dzone.com/articles/…