happens-before的規則

happens-before是JMM(java main memory)最核心的概念,在JMM中,如果一個操作執行的結果需要對另一個操作可見,那麼這兩個操作之間必須要存在happens-before關係。這裏提到的兩個操作可以是一個線程內的,也可以是在不同線程之間。

happens-before的規則如下:

1)程序順序規則:一個線程中的每個操作,happens-before於該線程中的任意後續操作。

2)監視器鎖定規則:對一個鎖的解鎖,happens-before於隨後對這個鎖的加鎖。

3)volatile變量規則:對一個volatile域的寫,happens-before於任意後續對這個volatile域的讀。

4)傳遞性:如果A happens-before B ,且B happens-before C,那麼A happens-before C。

5)start()規則:如果線程A執行操作TreadB.start()(啓動B線程),那麼A線程的ThreadB.start()操作happens-before於線程B中的任意操作。

6)join()規則:如果線程A執行操作ThreadB.join()併成功返回,那麼線程B中的任意操作happens-before於線程A從ThreadB.join()操作成功返回。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章