假设有两个线程,线程1和线程2,两个线程进行hashMap的put操作,触发了扩容。
线程1和线程2 都进入if,然后线程1没有拿到cpu的资源在上面代码注释的地方停下了。此时的变量指针如下图所示:
记住 线程1中 E变量指向a结点,next变量指向b结点。
下面是线程2 拿到cpu的资源,执行结点转移
因为之前线程1中E变量指向的是a结点,next变量指向的是b结点,所以如下图所示:
假设有两个线程,线程1和线程2,两个线程进行hashMap的put操作,触发了扩容。
线程1和线程2 都进入if,然后线程1没有拿到cpu的资源在上面代码注释的地方停下了。此时的变量指针如下图所示:
记住 线程1中 E变量指向a结点,next变量指向b结点。
下面是线程2 拿到cpu的资源,执行结点转移
因为之前线程1中E变量指向的是a结点,next变量指向的是b结点,所以如下图所示: