java vloatile 關鍵字

來源:互聯網
上載者:User

標籤:

java中volatile關鍵字的使用涉及到java的記憶體模型,JMM。簡單來說,每個線程都有一個本地記憶體(虛擬),線程共用的變數儲存在主記憶體中,主記憶體在堆中。記憶體訪問方式如所示。

volatile的作用總結如下:

(1)可見度:對一個volatile變數的讀取,總是能夠看到(任意線程)對這個變數的最後寫入,即能夠讀到最新的值。

(2)原子性:針對vloatile變數的讀/寫c操作具有原子性,但是複合操作不具有原子性。

上述圖中的操作流程說明

(1)線程A寫:線程A中更新了N的值,flag的值,對N的更新只是在本地記憶體中,但是對flag寫入後,因為flag是volatile的,所以會導致本地記憶體A中被線程A更新過的兩個共用變數被重新整理到了主記憶體中,這樣保證主記憶體中儲存的是volatile型變數最新被寫入的值。

(2)線程B讀:線程B讀volatile類型的變數時,JMM會把本地記憶體置為無效,線程接下來將從主記憶體中讀取共用變數。這樣保證讀取的是主記憶體中最新的值。

 

java vloatile 關鍵字

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.