在转移方法中,判断扩展终止(或帮助转移线程完成)的条件是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)