Java中指令重排
2024-09-01 06:31:39
/**
* 指令重排:代码执行顺序与预期不一致 (发生在前后行代码无联系时)
* 目的:提高性能
*
*/
public class HappenBefore {
private static int a=0;
private static boolean flag=false;
public static void main(String[] args) throws InterruptedException {
for(int i=0;i<10;i++) {
a=0;
flag=false;
//线程一:更改数据
Thread t1=new Thread(()->{
a=1;
flag=true;
});
//线程二:读取数据
Thread t2=new Thread(()->{
if(flag){
a*=1;
}
//指令重排
if(a==0){
System.out.println("happen-before->"+a);
}
});
t1.start();
t2.start();
t1.join();
t2.join();
}
}
}
最新文章
- H5 video的使用
- c#的问号?和双问号??
- Codeforces 741A:Arpa&#39;s loud Owf and Mehrdad&#39;s evil plan(LCM+思维)
- C++ ASSERT() 断言机制
- JavaScript总结(二) 系统分析
- Java中的工具类和新特性
- jquery 操作listbox 左右相互选择
- 使用layui-tree美化左侧菜单,点击生成tab选项
- QT出现应用程序无法正常启动0xc000007b的错误
- tiny6410 烧写uboot 转载
- mysql null 相关bug
- PHP获取时间戳和微秒数以及生成唯一ID
- 3D数学读书笔记——矩阵基础
- [清华集训2017]榕树之心[树dp]
- Android开发中遇到的问题(一)——Android模拟器端口被占用问题的解决办法
- 解决IDEA查看源码时提示:Library source does not match the bytecode for class的问题分析
- docker内存和cpu调试
- 【FTP资源】发现一个ArcGIS相关的FTP。
- [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 数据在mysq和hdfs之间的相互转换
- Macbook pro睡眠状态恢复后没声音的解决办法