日志文章

2019-12-27 aflfte2011

指令重排测试

package com.aflfte.others;
/**
 * 指令重排:
 * 指代码执行顺序与预期不一致
 * 
 * @author jinhao
 *
 */
public class HappenBefore {
//变量一
private static int a=1;
//变量二
private static boolean flag=false;

public static void main(String[] args) throws Exception {
for(int i=0;i<100;i++) {
a=0;
flag=false;
//线程一 更改数据 
Thread t=new Thread(()->{
a=1;
flag=true;
}); 

//线程二读取数据 
Thread t2=new Thread(()->{
if(flag) {
a*=1;

}
if(a==0) {
System.out.println("happen before a->"+a);
}
}) ;
t.start();
t2.start();
t.join();
t2.join();

}
}
}


« Volatile的使用 | 任务调度:定时执行任务»