小编Rob*_*Hou的帖子

在ConcurrentHashMap的传输方法中,我不明白这两个条件“i >= n”和“i + n >= nextn”的含义

在转移方法中,判断扩展终止(或帮助转移线程完成)的条件是if (i < 0 || i >= n || i + n >= nextn) {。我知道i < 0这个条件意味着所有的 bin 都被分配了,但我不明白其他两个条件的含义: i >= n和i + n >= nextn

是否i >= n考虑数据溢出?(-2147483648 - 1 = 2147483647);

是i + n >= nextn一样的i >= n吗?(我不这么认为)

private final void transfer(Node<K,V>[] tab, Node<K,V>[] nextTab) {
        int n = tab.length, stride;
        //...
        int nextn = nextTab.length;
        ForwardingNode<K,V> fwd = new ForwardingNode<K,V>(nextTab);
        boolean advance = true;
        boolean …
Run Code Online (Sandbox Code Playgroud)

java java.util.concurrent

5
推荐指数
1
解决办法
231
查看次数

标签 统计

java ×1

java.util.concurrent ×1