final内存屏障

来源:13-6 可见性

weibo_慕的地5184195

2020-05-11

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

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

写回答

1回答

悟空

2020-05-11

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

0
2
悟空
回复
weibo_慕的地5184195
volatile是特殊设计过的,参考:https://www.ibm.com/developerworks/library/j-jtp03304/
2020-05-11
共2条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程