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的使用
|
任务调度:定时执行任务»
|