Java並發編程藝術筆記之三章(1),java三章

來源:互聯網
上載者:User

Java並發編程藝術筆記之三章(1),java三章

1.Java線程間通訊對程式員透明,但是其記憶體可見度問題會引發其他怪異的問題;

2.在並法編程中,需要考慮兩個關鍵問題:1.線程間如何通訊 2.線程間如何同步

3.在命令式編程中,線程之間的通訊有兩種:1.共用記憶體 2.訊息傳遞

4.共用記憶體->線程之間共用程式的公用狀態,通過讀—寫該記憶體中公用狀態進行隱式通訊

5.訊息傳遞->線程之間沒有公用狀態,線程之間必須通過發送訊息來顯示的通訊;

6.同步是指控制不同線程間操作發生相對順序的機制,在共用記憶體並行存取模型中,是顯示進行的,程式員需要顯示的指定某個方法或代碼需要線上程之間互斥執行;而訊息傳遞並行存取模型中,由於訊息的發送必須在接受前,同步是隱式的...

7.Java採用的共用記憶體模型,但是Java線程間通訊是隱式進行的,整個過程對程式員透明,故不了理解隱式的線程通訊,會遇到記憶體可見度的問題...

8.Java線程間通訊由Java記憶體模型(JMM)控制,JMM決定一個線程對共用變數的寫入何時對另一個線程可見...

9.JMM定義了線程和記憶體之間的抽象關係:線程之間的共用變數儲存在主記憶體(Main Memory),每個線程都有一個私人的本地記憶體(Local Memory),本地記憶體中儲存了該線程以讀、寫的變數副本;

10.其實本地記憶體是JMM抽象出來的一個概念,並不是實際存在的,它涵蓋了緩衝、寫緩衝區、寄存器和其他硬體和編譯器最佳化

11.線程A與線程B之間通訊,需要經曆的兩個步驟:

    a.線程A把本地記憶體A中更新過的共用變數重新整理到主記憶體中;

    b.線程B到主記憶體中去讀取線程A之前更新過的共用變數。

總結:線程A和B之間通訊必須要經過主記憶體,JMM通過控制主記憶體和每個執行緒區域記憶體之間的互動,來問Java程式員提供記憶體可見度保證...

12.為提高效能,編譯器和處理器通常會對指令做出重排序,重排序又分為下面3種:

    a.編譯器最佳化重排序,不改變單線程語義的前提下,可以重新安排語句的執行順序;

    b.指令級並行的重排序,若不存在資料依賴性,處理器可以改變語句對應機器指令的執行順序;

    c.記憶體系統的重排序,由於處理器使用緩衝和讀/寫緩衝區,是的載入和儲存會發生亂序

總結:a是編譯器重排序,bc是處理器重排序,對於編譯器,JMM會禁止特定的編譯器重排序(例如:不存在資料依賴時),JMM針對處理器重排序,使用插入特定類型的記憶體屏障(Memory Barriers)

13.常見處理器(x86處理器)只會對Store-Load(Store1先把資料重新整理到記憶體,然後在執行後面的裝在指令...)重排序,ARM架構比較奇怪,可能支援Load-Load、Load-Store、Store-Store;

14.happens-before->JSR-133使用該概念來闡述操作之間的記憶體可見度;

15.happens-before規則:

    a.程式順序規則:一個線程每個操作,happens-before於該線程之後進行其他動作

    b.監視器鎖規則:一個鎖的解鎖,happens-before與隨後對這個鎖再加鎖;

    c.volatile變數規則:一個volatile域的寫,happens-before於任意後序對這個volatile域發生讀操作

    d.傳遞性:A happens-before B,B happens-before C => A happens-before C;   

總結:happens-before就是展示給程式員理解JMM底層重排序的一種規則...

16.as-if-serial->不管怎麼重排,單線程程式的執行結果不能被改變...as-if-serial就是把單線程程式保護了起來

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.