采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,这一节使用了synchronized修饰方法,已经保证了修改变量的可见性,可以使用volatile修饰变量,对吗? 还有个问题就是,CAS修改的变量必须要使用volatile保证可见性吗,CAS和volatile有什么关系呢?
退出synchronized之后,才能保证变量的可见性,所以加volatile是有必要的。
CAS的变量需要用volatile修饰,以便在各线程之间保证可见。
退出synchronized之后,别的线程拿到锁,根据happens-before原则,就能看到变量更新后的值。为什么还要加volatile?
退出synchronized块之前happens-before原则不生效
可是在TwoThreadsCompetition这个例子中,退出synchronized块之前不会有别的线程能修改的了变量value的值,因为他们都拿不到锁被阻塞等待呀,所以在这个例子中变量value不用volatile修饰也不会发生可见性的问题,对吧?
登录后可查看更多问答,登录/注册
JUC全方位讲解,构建并发工具类知识体系
983 11
1.4k 10
1.0k 10
993 10
1.4k 9