如下原則是指令重排序不可違背的:函數
1.程序順序性原則:一個線程內保證語意的串行性2.volatile原則:volatile變量的寫,先發生於讀,這保證了volatile變量的可見性3.傳遞性:A先於B,B先於C,那麼A必然先於C4.線程的start()方法先於它的每個動做5.線程的全部操做先於線程的終結(Thread.join)6.鎖規則:解鎖必然發生在隨後的加鎖前7.線程的中斷先於被中斷線程的代碼8.對象的構造函數執行,結束先於finalize()方法線程