请稍等 ...
×

采纳答案成功!

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

老师,如果是依赖关系的,加了volatile还能看到b之前所有的操作吗

前面是a = 3;b=a;这是有依赖关系的,因此加了volatile可以看到b之前的所有操作,那如果a=3;b=4;a和b无依赖关系,假设不发生重排序,那么b加上volatile一定能看到a=3这个操作吗

正在回答 回答被采纳积分+3

1回答

悟空 2020-06-02 09:51:40

那是不能保证的。

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_淡定_49 #1
    老师不对呢,我看了你触发器的章节,下面的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("....")
    	}
    }
    回复 有任何疑惑可以回复我~ 2020-06-02 16:15:31
  • 悟空 回复 提问者 qq_淡定_49 #2
    你理解触发器的讲解就行,不管有没有依赖关系,本质是volatile修饰的后面的读操作,能看到之前的对volatile写操作,包括期间的代码执行情况。
    回复 有任何疑惑可以回复我~ 2020-06-02 16:39:16
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信