java 重现CPU乱序执行问题
2016-01-26 19:59
381 查看
下面的代码,将 setted 变量的 volatile 修饰符去掉则会导致线程 w 死循环在 while(!setted);这一句上。这是由于 w 线程取 setted 值被优化为直接从本 CPU 的 cache-line 中取的缘故。只需要将 setted 变量定义为 volatile 的,对于这个变量的访问便具有 acquire(读) 和 release (写) 语义,于是便观察不到这个现象了。
相关文章推荐
- java中的闭包
- Java入门二 2 封装
- java中int,float,long,double取值范围,内存泄露
- java中int,float,long,double取值范围,内存泄露
- 回调方法介绍之中国好室友篇(Java示例)
- java类的生命周期分析
- 将java程序打包为一个可执行jar包的另一种方式
- java中abstract详解
- The Java™ Tutorials — Generics :Generic Methods and Bounded Type Parameters 泛型方法和受限类型参数
- 将java程序打包为一个可执行jar包
- java火车站售票系统之多线程并发访问
- java线程安全之死锁问题
- ehcache+spring配置
- java.util.Collection体系源码解读<四>AbstractList源码解读
- JAVA 文件下载 通过controller 转到指定地址
- javaWeb笔记(一) 反射
- JavaSE入门学习10:Java修饰符
- web项目中文乱码问题实践经验(springmvc +hibernate)
- CXF+Spring实现webservice
- 当执行gradle命令时出现JAVA_HOME设置无效的解决办法