【发布时间】:2016-04-12 02:33:44
【问题描述】:
我一直试图理解 JDK8 中的 ConcurrentHashMap 函数,这与 JDK7 中的情况形成对比(除了源代码之外,还可以找到一些很好的人很好地解释了这些函数,例如 Richard @987654321 @)。看起来在 JDK8 中已经发生了相当大的变化 - 例如本身没有更多的“段”,但不知何故我觉得这些变化是为了让代码更简单?
-
我在理解 ConcurrentHashMap.putVal(...) 方法时遇到了一些困难,尤其是以下部分 - 这种直接锁定在“段”列表的头部是否仍然可以插入到 else{} ?:
else if ((fh = f.hash) == MOVED) tab = helpTransfer(tab, f); else {//...} 也不太确定 ConcurrentHashMap.casTabAt(...) 的代码。
1234563 '也没有看到循环'重试'?)或者有某种我没有观察到的乐观锁?
如果有人可以提供一些提示,不胜感激。
【问题讨论】:
标签: concurrency java-8 concurrenthashmap