面試必問系列:6、介紹一下volatile關鍵字

volatile關鍵字用來保證有序性和可見性。

有序性:

這跟Java的內存模型有關係。我們寫的代碼不一定是按照我們的書寫的順序來執行,編譯器會做重排序,這樣做的好處是減少了流水線的阻塞。

volatile變量規則是:對一個變量的寫操作先行發生於後面的讀操作;有序性是通過插入內存屏障來保證。

可見性:

首先Java的內存模型分爲主內存和工作內存,線程A將變量i從主內存讀取到工作內存中,並做+1操作,此時並沒有將i刷新到主內存中。線程B讀取到的i還是舊值。加了volatile關鍵字後彙編指令會多Lock前綴,保證了內存可見性。

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