<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

    Java 內存模型

    由于 ConcurrentHashMap 是建立在 Java 內存模型基礎上的,為了更好的理解 ConcurrentHashMap,讓我們首先來了解一下 Java 的內存模型。

    Java 語言的內存模型由一些規(guī)則組成,這些規(guī)則確定線程對內存的訪問如何排序以及何時可以確保它們對線程是可見的。下面我們將分別介紹 Java 內存模型的重排序,內存可見性和 happens-before 關系。

    重排序

    內存模型描述了程序的可能行為。具體的編譯器實現可以產生任意它喜歡的代碼 -- 只要所有執(zhí)行這些代碼產生的結果,能夠和內存模型預測的結果保持一致。這為編譯器實現者提供了很大的自由,包括操作的重排序。

    編譯器生成指令的次序,可以不同于源代碼所暗示的“顯然”版本。重排序后的指令,對于優(yōu)化執(zhí)行以及成熟的全局寄存器分配算法的使用,都是大有脾益的,它使得程序在計算性能上有了很大的提升。

    重排序類型包括:

    • 編譯器生成指令的次序,可以不同于源代碼所暗示的“顯然”版本。
    • 處理器可以亂序或者并行的執(zhí)行指令。
    • 緩存會改變寫入提交到主內存的變量的次序。

    內存可見性

    由于現代可共享內存的多處理器架構可能導致一個線程無法馬上(甚至永遠)看到另一個線程操作產生的結果。所以 Java 內存模型規(guī)定了 JVM 的一種最小保證:什么時候寫入一個變量對其他線程可見。

    在現代可共享內存的多處理器體系結構中每個處理器都有自己的緩存,并周期性的與主內存協調一致。假設線程 A 寫入一個變量值 V,隨后另一個線程 B 讀取變量 V 的值,在下列情況下,線程 B 讀取的值可能不是線程 A 寫入的最新值:

    • 執(zhí)行線程 A 的處理器把變量 V 緩存到寄存器中。
    • 執(zhí)行線程 A 的處理器把變量 V 緩存到自己的緩存中,但還沒有同步刷新到主內存中去。
    • 執(zhí)行線程 B 的處理器的緩存中有變量 V 的舊值。

    Happens-before 關系

    happens-before 關系保證:如果線程 A 與線程 B 滿足 happens-before 關系,則線程 A 執(zhí)行動作的結果對于線程 B 是可見的。如果兩個操作未按 happens-before 排序,JVM 將可以對他們任意重排序。

    下面介紹幾個與理解 ConcurrentHashMap 有關的 happens-before 關系法則:

    1. 程序次序法則:如果在程序中,所有動作 A 出現在動作 B 之前,則線程中的每動作 A 都 happens-before 于該線程中的每一個動作 B。
    2. 監(jiān)視器鎖法則:對一個監(jiān)視器的解鎖 happens-before 于每個后續(xù)對同一監(jiān)視器的加鎖。
    3. Volatile 變量法則:對 Volatile 域的寫入操作 happens-before 于每個后續(xù)對同一 Volatile 的讀操作。
    4. 傳遞性:如果 A happens-before 于 B,且 B happens-before C,則 A happens-before C。
    posted on 2015-03-22 12:40 abin 閱讀(1091) 評論(0)  編輯  收藏 所屬分類: JVM
    主站蜘蛛池模板: 亚洲人成网站色7799| 亚洲精品综合一二三区在线 | 亚洲精品av无码喷奶水糖心| 亚洲精品视频在线观看免费| 亚洲黄网在线观看| 98精品全国免费观看视频| 亚洲最大在线视频| 青青青国产在线观看免费 | 亚洲第一se情网站| 免费人成视频在线观看视频| 18勿入网站免费永久| 久久亚洲精品成人AV| 日本免费xxxx| 亚洲日韩精品A∨片无码加勒比| 日韩免费观看的一级毛片| 国产精品亚洲精品日韩动图| 亚洲乱码日产精品a级毛片久久| 9久久免费国产精品特黄| 久久精品亚洲中文字幕无码网站 | **毛片免费观看久久精品| 亚洲婷婷综合色高清在线| 免费看www视频| 一级a性色生活片久久无少妇一级婬片免费放| MM131亚洲国产美女久久| 最近免费字幕中文大全| 亚洲男女性高爱潮网站| 国产网站免费观看| a级毛片毛片免费观看久潮| 亚洲AV色吊丝无码| 四虎永久成人免费影院域名| 国产一级在线免费观看| 亚洲一区中文字幕在线观看| 俄罗斯极品美女毛片免费播放| a级毛片免费观看视频| 亚洲依依成人亚洲社区| 久久久久国产亚洲AV麻豆| 每天更新的免费av片在线观看| 国产精品亚洲天堂| 亚洲嫩模在线观看| 四虎影在线永久免费四虎地址8848aa| 国产免费爽爽视频在线观看|