Java關鍵字之volatile詳解

volatile是Java虛擬機提供的輕量級的同步機制,平時程序員基本上到用不到,遇到多線程同步第一想到的是用synchronized 或者Lock進行同步。首先volatitle關鍵是修飾變量的,它有兩個特性:第一保證此變量對所有線程是可見的(可見性),當一條線程修改了這個值的變量,新值對於其他線程都是能夠立刻得知的。普通變量做不到這一點,普通變量的值在線程間傳遞均需要通過主內存來完成,例如,線程A修改了一個普通變量的值,然後向主內存進行回寫,另外一條線程B在線程A回寫完成之後再從主內存進行讀取操作,新變量值纔會對線程B可見。第二個特性是禁止指令重排序優化,普通的變量僅僅會保證在該方法的執行過程中所有依賴賦值結果的地方都能獲取到正確的結果,而不能保證變量賦值操作的順序與程序代碼中的執行順序一致。

後續持續更新中...............平時基本不用,面試的時候給你來個突然襲擊頓時慌了,面試的時候能說出第一條特性就可以,我是面試官的話這個問題的回答已經很滿意;如果面試官繼續問你第二個特性或者其他的延伸是不是想說去你大爺的,哈哈哈哈.....

 

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