指令重排的分類:編譯期重排序和運行時重排序
在JVM編譯時期或者CPU執行JVM字節碼時期,對現有的指令進行重排序,主要目的為了優化運行速度(在不改變程序運行結果的前提下)
int a = 3 //1
int b = 5; //2
int c = a + b; //3
雖然說指令重排可以調高程序的執行效率,但是在多線程環境下運行可能會影響到結果
解決辦法:內存屏障
內存屏障是一個屏障指令,使CPU對屏障指令之前和之后的內存操作結果都是一樣的,相當於一種約束