采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
jimin老师。;我最近在看java并发艺术,根据作者的42页volatile重排序规则表描述;volatile写之前是普通读 已经考虑到volatile写之前,加过StoreStore屏障了, 要不要再加LoadStore屏障;
你好,volatile本身是只具备可见性,而不具备原子性的,那些内存屏障是在编译时遇到volatile加入的指令,我们是无法对其改变的。jvm设计的这些关键字每个都有自己的特性,每个也有解决不了的问题,因此就设计上我感觉是没问题,我们自己要根据需要去选择的使用。比如volatile不具备原子性,导致课程里把count使用volatile修饰时,依旧无法保证线程安全性。这说明volatile并不适合这种场合,这种场合更适合使用synchronized,我们也没必要要求每个关键字都可以解决相同的问题,其实也没那个必要,我们根据关键字的特性去使用就可以了。不知道我说的你是否明白,体会一下
非常感谢!
就是这些内存屏障就只能保证可见性,其它的就不管了,对么?
这句话本身差点一起,volatile是通过在cpu指令上加入内存屏障来保证可见性这个特性。至于其他的,他就不care了
登录后可查看更多问答,登录/注册
构建完整并发与高并发知识体系,倍增高薪面试成功率!
1.5k 1
955 18
1.0k 15
3.3k 12
1.0k 12