请稍等 ...
×

采纳答案成功!

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

内存屏障

jimin老师。;我最近在看java并发艺术,根据作者的42页volatile重排序规则表描述;volatile写之前是普通读  已经考虑到volatile写之前,加过StoreStore屏障了, 要不要再加LoadStore屏障;


正在回答

1回答

你好,volatile本身是只具备可见性,而不具备原子性的,那些内存屏障是在编译时遇到volatile加入的指令,我们是无法对其改变的。

jvm设计的这些关键字每个都有自己的特性,每个也有解决不了的问题,因此就设计上我感觉是没问题,我们自己要根据需要去选择的使用。比如volatile不具备原子性,导致课程里把count使用volatile修饰时,依旧无法保证线程安全性。这说明volatile并不适合这种场合,这种场合更适合使用synchronized,我们也没必要要求每个关键字都可以解决相同的问题,其实也没那个必要,我们根据关键字的特性去使用就可以了。

不知道我说的你是否明白,体会一下

1 回复 有任何疑惑可以回复我~
  • 提问者 黎明的烬 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-06-09 11:02:41
  • 提问者 黎明的烬 #2
    就是这些内存屏障就只能保证可见性,其它的就不管了,对么?
    回复 有任何疑惑可以回复我~ 2018-06-09 11:03:31
  • Jimin 回复 提问者 黎明的烬 #3
    这句话本身差点一起,volatile是通过在cpu指令上加入内存屏障来保证可见性这个特性。至于其他的,他就不care了
    回复 有任何疑惑可以回复我~ 2018-06-09 11:07:00
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信