请稍等 ...
×

采纳答案成功!

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

final内存屏障

悟空老师你好,我在其他书上看到final,产生一个疑问。volatile禁止重排序,在volatile写操作前的所有操作都是可见的,final是否有同样效果。
class FinalOrder{
     int i;
     final int f;

     public FinalOrder(){
          i = 1;
          f = 1;
     }
}
书上说i =1可能会在构造方法外执行,但f是有内存屏障。这里final为何不能和volatile一样.

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

1回答

悟空 2020-05-11 16:49:57

据我所知,final并没有类似的效果。

0 回复 有任何疑惑可以回复我~
  • 提问者 weibo_慕的地5184195 #1
    final和volatile都有内存屏障,两者有什么区别呢?
    回复 有任何疑惑可以回复我~ 2020-05-11 16:54:36
  • 悟空 回复 提问者 weibo_慕的地5184195 #2
    volatile是特殊设计过的,参考:https://www.ibm.com/developerworks/library/j-jtp03304/
    回复 有任何疑惑可以回复我~ 2020-05-11 16:56:55
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信