哪些指令不能重排序:Happen-Before 神器

如下原則是指令重排序不可違背的:函數

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

相關文章
相關標籤/搜索