真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java項目中使用volatile關(guān)鍵字時需要注意哪些問題

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)Java項目中使用volatile關(guān)鍵字時需要注意哪些問題,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)建站于2013年成立,先為巴里坤哈薩克等服務(wù)建站,巴里坤哈薩克等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為巴里坤哈薩克企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

 Volatile 變量具有 synchronized 的可見性特性,但是不具備原子特性。這就是說線程能夠自動發(fā)現(xiàn) volatile 變量的最新值。Volatile 變量可用于提供線程安全,但是只能應(yīng)用于非常有限的一組用例:多個變量之間或者某個變量的當前值與修改后值之間沒有約束。因此,單獨使用 volatile 還不足以實現(xiàn)計數(shù)器、互斥鎖或任何具有與多個變量相關(guān)的不變式。

volatile關(guān)鍵字是Java中的一種稍弱的同步機制,為什么稱之為弱機制。

 在理解這個之前,我們先來看看java在進行同步時必須遵守的兩個機制:

 1、可見性:當一個線程修改一個共享變量時,另外一個線程能讀到這個修改的值。

 2、原子性:指不可分割,此處指程序執(zhí)行過程中,某操作不能中斷,則為原子操作。

 volatile關(guān)鍵字不能保證原子性,只能保證可見性,故在一般情況下不能使用該關(guān)鍵字進行同步操作。但是當滿足以下兩個特定條件時,可以使用其進行同步:

 1、運算結(jié)果并不依賴變量的當前值,或者能夠保證只有單一的線程修改變量的值。

 2、變量不需要與其他的狀態(tài)變量共同參與不變約束

例:

volatile boolrean flag;
public void close(){
    flag = true;
}
public void open(){
   while(!flag){
    ...
   }
}

 此時open()方法的執(zhí)行依賴flag的值,必須使用同步,但是使用synchronized關(guān)鍵字或者其他方法同步比較繁瑣,此時該情景符合以上兩個條件,故可以使用volatile關(guān)鍵字進行同步。

volatile關(guān)鍵字原理:

  被volatile修飾的變量,不會被緩存在寄存器或者其他地方,每次寫直接寫去主內(nèi)存,讀也是從主內(nèi)存讀取。所以可以保證可見性。

上述就是小編為大家分享的Java項目中使用volatile關(guān)鍵字時需要注意哪些問題了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站題目:Java項目中使用volatile關(guān)鍵字時需要注意哪些問題
網(wǎng)站路徑:http://weahome.cn/article/jjeicj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部