硬件和操作系统的底层知识
1、cpu乱序执行:cpu在进行读等待的同时执行指令,是cpu乱序的根源,不是乱,是cpu为提高效率
指令重排 实验代码,
public static void main(String[] args) throws InterruptedException {
int i = 0;
for (;;){
i++;
x = 0; y = 0 ; a = 0 ; b = 0;
Thread one = new Thread(new Runnable() {
@Override
public void run() {
a = 1;
x = b;
}
});
Thread other = new Thread(new Runnable() {
@Override
public void run() {
b = 1;
y = a;
}
});
one.start();
other.start();
one.join();
other.join();
String result = "第" + i + "次("+ x + "," + y + ")";
if(x == 0 && y == 0){
System.err.println(result);
break;
}
}
}
2、volatile的作用
1)保证不同线程对这个变量进行操作是的可见性,即一个线程修改了某个变量的值,这个新值对其他线程立即课件
2)禁止进行指令重排