先上代码,和课程一样:
int a = 1;
int b = 2;
private void change() {
a = 3;
b = a;
}
private void print() {
System.out.println("b=" + b + ",a=" + a);
}
我想问以下两种情况会不会发生,虽然我执行了很久都没有捕获到:
考虑到重排序影响,会不会出现change里面重排序成:
b=a;
a=3
打印b、a
最后输出结果就是b=1,a=3呢?
可见性+重排序,是不是可能会执行为:
b=a;
打印b、a
a=3
最后就输出b=1,a=1的情况呢?