240 发简信
IP属地:海南
  • 同样有这个疑惑,请问大佬这个问题找到答案了吗?

    并发编程——ConcurrentHashMap#addCount() 分析

    前言 ConcurrentHashMap 精华代码很多,前面分析了 helpTransfer 和 transfer 和 putVal 方法,今天来分析一下 addCount ...

  • addCount 函数下面这个地方存在一些问题

    注意: sc 是一个本地变量, 进入if(sc<0) 这个分支以后, 值不会再改变, rs 是 resizeStamp 的返回结果, 是一个正值, 按理来说 sc 是不可能等于 rs + 1 的, 我感觉这里像是 jdk 的一个 bug, 正确的判断方法应该是 (sc >>> RESIZE_STAMP_SHIFT) == rs +1 判断扩容是否已经结束

    if (sc < 0) {
    if ((sc >>> RESIZE_STAMP_SHIFT) != rs || sc == rs + 1 ||
    sc == rs + MAX_RESIZERS || (nt = nextTable) == null ||
    transferIndex <= 0)
    break;