请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于重排序和可见性结果

先上代码,和课程一样:

	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的情况呢?

正在回答

1回答

由于a = 3;       b = a;这两句存在依赖关系,所以不会被重排序

0 回复 有任何疑惑可以回复我~
  • 提问者 丨木頭丶吅 #1
    感谢悟空老师,我不确定刚刚提到的是否会进行CPU指令重排序
    回复 有任何疑惑可以回复我~ 2020-10-16 10:56:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信