就是假设从0开始,线程1和线程2都在等待,然后经过栅栏,一起执行index++,
- 那此时假设没有冲突,线程1将index值变成1, 而线程2 将index变成了2;
然后一起等待,经过栅栏后来到 synchronized代码块; 那按老师说的一种情况就是,线程2先进入synchronized代码块,此时线程2知道index值为2, 线程2 执行完退出,释放锁,
由于可见性原因,线程1能看到线程2操作的东西,那么当然知道index值是为2!
- 老师,假设这里反过来,线程1先进入了synchronized代码块, 此时线程2如果还没来得及将index值刷新到主内存中,线程1是不是还是访问自己内存中的值,index值为1,是这样吗?
那如果是这样的话,感觉后面结果就有错了!所以感觉自己想的有问题…