栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java内存指令重排序 和 volatile

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java内存指令重排序 和 volatile

1.指令重排发生原因?

这个的重类加载说起,一个被类加载到类加载器中,首先会进行检查校验,这里涉及到的 双亲委派机制,等等,发生内存重排序 ,实在类初始化的时候,例如 类A.class,里面有个变量in m=8,在类初始化的时候,首先会创建变量m,然后赋初始值0,即m=0,再m赋值为变量8,再变量m的指针指向8这个值,这里面jvm的优化,可能会变量的引用会先指向8,再赋值m=8,这就发生了指令重排,再多线程编程时,可能读到的值是m=0,所以这时我们需要加上volatile修饰变量,防止指令重排序。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351759.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号