java內存模型之happenbefore原則

      網友投稿 920 2022-05-30

      Java內存模型之happenbefore原則

      JMM其實是在遵循一個基本原則:只要不改變程序的執行結果(指的是單線程程序和正確同步的多線程程序),編譯器和處理器怎么優化都行。

      java內存模型之happenbefore原則

      happens-before關系的定義

      happens-before關系的定義如下。

      1)如果一個操作happens-before另一個操作,那么第一個操作的執行結果將對第二個操作

      可見,而且第一個操作的執行順序排在第二個操作之前。

      2)兩個操作之間存在happens-before關系,并不意味著Java平臺的具體實現必須要按照

      happens-before關系指定的順序來執行。如果重排序之后的執行結果,與按happens-before關系

      來執行的結果一致,那么這種重排序并不非法(也就是說,JMM允許這種重排序)。

      上面的1)是JMM對程序員的承諾。從程序員的角度來說,可以這樣理解happens-before關

      系:如果A happens-before B,那么Java內存模型將向程序員保證——A操作的結果將對B可見,

      且A的執行順序排在B之前。注意,這只是Java內存模型向程序員做出的保證!

      上面的2)是JMM對編譯器和處理器重排序的約束原則。正如前面所言,JMM其實是在遵

      循一個基本原則:只要不改變程序的執行結果(指的是單線程程序和正確同步的多線程程序),編譯器和處理器怎么優化都行。JMM這么做的原因是:程序員對于這兩個操作是否真的被重

      排序并不關心,程序員關心的是程序執行時的語義不能被改變(即執行結果不能被改變)。因

      此,happens-before關系本質上和as-if-serial語義是一回事。

      as-if-serial語義保證單線程內程序的執行結果不被改變,happens-before關系保證正確同

      步的多線程程序的執行結果不被改變。

      ·as-if-serial語義給編寫單線程程序的程序員創造了一個幻境:單線程程序是按程序的順

      序來執行的。happens-before關系給編寫正確同步的多線程程序的程序員創造了一個幻境:正

      確同步的多線程程序是按happens-before指定的順序來執行的。

      as-if-serial語義和happens-before這么做的目的,都是為了在不改變程序執行結果的前提

      下,盡可能地提高程序執行的并行度。

      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執行操作ThreadB.start()(啟動線程B),那么A線程的

      ThreadB.start()操作happens-before于線程B中的任意操作。

      線程A在執行ThreadB.start()之前對共享變量所做的修改,接下來在線程B開始執行后都將確保對線程B可見。

      6)join()規則:如果線程A執行操作ThreadB.join()并成功返回,那么線程B中的任意操作

      happens-before于線程A從ThreadB.join()操作成功返回。

      線程A執行操作ThreadB.join()并成功返回后,線程B中的任意操作都將對線程A可見。

      Java 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【Java 并發編程】線程指令重排序問題 ( 指令重排序規范 | volatile 關鍵字禁止指令重排序 )
      下一篇:華為發布Atlas智能計算平臺,以強大算力開啟AI未來
      相關文章
      亚洲成a人无码av波多野按摩| 99亚洲乱人伦aⅴ精品| 亚洲国产精品无码久久九九| 亚洲色偷偷综合亚洲AV伊人蜜桃| 久久精品国产亚洲αv忘忧草| 亚洲国产成人超福利久久精品| 91亚洲精品视频| 亚洲色图视频在线观看| 亚洲日本国产乱码va在线观看| 亚洲综合在线成人一区| 亚洲激情电影在线| 亚洲白色白色在线播放| 亚洲成人福利网站| 亚洲三级在线视频| 亚洲自偷自偷在线成人网站传媒 | 亚洲精品成人在线| 亚洲AⅤ男人的天堂在线观看 | 亚洲国产精品成人午夜在线观看 | 亚洲欧洲日本天天堂在线观看| 久久久久亚洲AV无码网站| 亚洲AV永久无码精品一百度影院| 亚洲宅男天堂在线观看无病毒 | 亚洲精品乱码久久久久久| 亚洲AV无码国产丝袜在线观看| 亚洲国产精品国自产拍电影| 久久久无码精品亚洲日韩京东传媒| 亚洲精品国产第1页| 久久狠狠爱亚洲综合影院| 亚洲无码一区二区三区| 美国毛片亚洲社区在线观看| 亚洲精品和日本精品| 亚洲综合无码AV一区二区| 亚洲av无码一区二区三区不卡| 亚洲精品免费观看| 亚洲中文字幕人成乱码| 亚洲精华国产精华精华液网站| 国产亚洲福利精品一区二区| 精品亚洲一区二区三区在线观看 | 亚洲国产乱码最新视频| 综合偷自拍亚洲乱中文字幕| 亚洲欧洲久久久精品|