監視器鎖規則。在監視器鎖上的解鎖操作必須在同乙個監視器鎖上的加鎖操作之前執行。
volatile 變數規則。對volatile變數的寫入操作必須在對該變數的讀操作之前執行(同樣適用與原子變數)
執行緒結束規則。執行緒中的任何操作都必須在其他執行緒檢測到該執行緒已經結束之前執行,或者從thread.join中成功返回,或者在呼叫thread.isalive時返回false。
中斷規則。當乙個執行緒在另外乙個執行緒上呼叫interrupt時,必須在被中斷執行緒檢測到interrupt呼叫之前執行(通過丟擲interruptedexception,或者呼叫isinterrupted和interrupted)
終結器規則。物件的建構函式必須在啟動該物件的終結器之前執行
Happens Before的7個規則
1 程式次序規則 在乙個執行緒內,按照程式 順序,書寫在前面的操作先行發生於書寫在後面的操作。準確地說,應該是控制流順序而不是程式 順序,因為要考慮分支 迴圈等結構。2 管程鎖定規則 乙個unlock操作先行發生於後面對同乙個鎖的lock操作。這裡必須強調的是同乙個鎖,而 後面 是指時間上的先後順序...
多執行緒 happens before 先行發生原則
這8條規則中,前4條規則是比較重要的,後4條規則都是顯而易見的。下面我們來解釋一下前4條規則 對於程式次序規則來說,我的理解就是一段程式 的執行在單個執行緒中看起來是有序的。注意,雖然這條規則中提到 書寫在前面的操作先行發生於書寫在後面的操作 這個應該是程式看起來執行的順序是按照 順序執行的,因為虛...
簡單易懂講解happens before原則
在接下來的敘述裡我首先會說明happens before規則是幹什麼用的,然後用乙個簡單的小程式說明happens before規則 一 happens before規則 我們編寫的程式都要經過優化後 編譯器和處理器會對我們的程式進行優化以提高執行效率 才會被執行,優化分為很多種,其中有一種優化叫做...