重排序:
cpu对于代码执行的顺序不是按照程序写好的顺序,假如代码所涉及的变量之间前后没有必需的排序关系(实际上cpu会误判),cpu可能会重新排列它们的顺序来提高效率。例如:int a = 1;a++;int b = 2;b++;a++;b++;a++;b++;那么cpu肯定会先对a执行完再去操作b这样效率更高(这里只是假设)。
场景:
保证可见性:
public class Test {
public volatile int inc = 0;
public synchronized void increase() {
inc++;
}
public static void main(String[] args) {
final Test test = new Test();
for(int i=0;i<10;i++){
new Thread(){
public void run() {
for(int j=0;j<1000;j++)
test.increase();
};
}.start();
}