采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
前面是a = 3;b=a;这是有依赖关系的,因此加了volatile可以看到b之前的所有操作,那如果a=3;b=4;a和b无依赖关系,假设不发生重排序,那么b加上volatile一定能看到a=3这个操作吗
那是不能保证的。
老师不对呢,我看了你触发器的章节,下面的a 、abc、abcd都和b没有依赖关系,但是当volatile修饰,加载b拿到了0,你说是可以看到之前操作的。 int a=1; int abc=1; int abcd=1 volatile int b=2; private void change(){ abc=7; abcd=70; a=3; b=0 } private void print(){ if(b==0){ System.out.println("....") } }
你理解触发器的讲解就行,不管有没有依赖关系,本质是volatile修饰的后面的读操作,能看到之前的对volatile写操作,包括期间的代码执行情况。
登录后可查看更多问答,登录/注册
完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题
1.9k 26
930 12
1.1k 12
2.5k 12
1.1k 11