volatile关键字不但可以防止指令重排,也可以保证线程访问的变量值是主内存中的最新值
完整版 双重校验单例模式
1 | public class Singleton { |
期望的执行顺序:
1 | memory =allocate(); //1:分配对象的内存空间 |
如果不加volatile 关键字,那么,就会发生指令重排序.出现下面的情况.
1 | memory =allocate(); //1:分配对象的内存空间 |
volatile关键字不但可以防止指令重排,也可以保证线程访问的变量值是主内存中的最新值
站点微信订阅号zhengjinyibu,欢迎大家搜索关注.
volatile关键字不但可以防止指令重排,也可以保证线程访问的变量值是主内存中的最新值
完整版 双重校验单例模式
1 | public class Singleton { |
期望的执行顺序:
1 | memory =allocate(); //1:分配对象的内存空间 |
如果不加volatile 关键字,那么,就会发生指令重排序.出现下面的情况.
1 | memory =allocate(); //1:分配对象的内存空间 |
volatile关键字不但可以防止指令重排,也可以保证线程访问的变量值是主内存中的最新值
本文内容仅作为作者个人兴趣与观点,不代表所在公司及团队的观点和决策。若有不恰当之处,请联系站长.