<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java中關(guān)鍵字volatile的含義(轉(zhuǎn))

            
            在Java中設(shè)置變量值的操作,除了long和double類型的變量外都是原子操作,也就是說,對(duì)于變量值的簡單讀寫操作沒有必要進(jìn)行同步。

    這在JVM 1.2之前,Java的內(nèi)存模型實(shí)現(xiàn)總是從主存讀取變量,是不需要進(jìn)行特別的注意的。而隨著JVM的成熟和優(yōu)化,現(xiàn)在在多線程環(huán)境下volatile關(guān)鍵字的使用變得非常重要。

    在當(dāng)前的Java內(nèi)存模型下,線程可以把變量保存在本地內(nèi)存(比如機(jī)器的寄存器)中,而不是直接在主存中進(jìn)行讀寫。這就可能造成一個(gè)線程在主存中修改了一個(gè)變量的值,而另外一個(gè)線程還繼續(xù)使用它在寄存器中的變量值的拷貝,造成數(shù)據(jù)的不一致。

    要解決這個(gè)問題,只需要像在本程序中的這樣,把該變量聲明為volatile(不穩(wěn)定的)即可,這就指示JVM,這個(gè)變量是不穩(wěn)定的,每次使用它都到主存中進(jìn)行讀取。一般說來,多任務(wù)環(huán)境下各任務(wù)間共享的標(biāo)志都應(yīng)該加volatile修飾。

    Volatile修飾的成員變量在每次被線程訪問時(shí),都強(qiáng)迫從共享內(nèi)存中重讀該成員變量的值。而且,當(dāng)成員變量發(fā)生變化時(shí),強(qiáng)迫線程將變化值回寫到共享內(nèi)存。這樣在任何時(shí)刻,兩個(gè)不同的線程總是看到某個(gè)成員變量的同一個(gè)值。

    Java語言規(guī)范中指出:為了獲得最佳速度,允許線程保存共享成員變量的私有拷貝,而且只當(dāng)線程進(jìn)入或者離開同步代碼塊時(shí)才與共享成員變量的原始值對(duì)比。

    這樣當(dāng)多個(gè)線程同時(shí)與某個(gè)對(duì)象交互時(shí),就必須要注意到要讓線程及時(shí)的得到共享成員變量的變化。

    而volatile關(guān)鍵字就是提示VM:對(duì)于這個(gè)成員變量不能保存它的私有拷貝,而應(yīng)直接與共享成員變量交互。

    使用建議:在兩個(gè)或者更多的線程訪問的成員變量上使用volatile。當(dāng)要訪問的變量已在synchronized代碼塊中,或者為常量時(shí),不必使用。

    由于使用volatile屏蔽掉了VM中必要的代碼優(yōu)化,所以在效率上比較低,因此一定在必要時(shí)才使用此關(guān)鍵字。

    文章出處:DIY部落(http://www.diybl.com/course/3_program/java/javaxl/20090302/156333.html)


    同時(shí)查看下IBM中的詳細(xì)解釋:

    Java 理論與實(shí)踐: 正確使用 Volatile 變量

    http://www.ibm.com/developerworks/cn/java/j-jtp06197.html

    posted on 2009-11-16 16:34 胡鵬 閱讀(355) 評(píng)論(0)  編輯  收藏 所屬分類: java基礎(chǔ)

    導(dǎo)航

    <2009年11月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    agile

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲精品韩国美女在线| 日韩亚洲人成在线综合日本| 亚洲日本在线免费观看| 成av免费大片黄在线观看| 国产性爱在线观看亚洲黄色一级片 | 特级一级毛片免费看| 免费国产综合视频在线看| 亚洲成a∨人片在无码2023| 性感美女视频免费网站午夜| 亚洲av无码久久忘忧草| 67194成是人免费无码| 国产v亚洲v天堂a无| 国产青草视频免费观看97| 猫咪免费观看人成网站在线| 亚洲欧洲一区二区三区| 中文字幕免费在线看线人动作大片| 亚洲无线码在线一区观看| 久久香蕉国产线看免费| 亚洲精品乱码久久久久久下载| 成年在线观看网站免费| 亚洲精品无码中文久久字幕| 国产在线98福利播放视频免费| 老司机午夜免费视频| 亚洲精品无码久久一线| 麻豆高清免费国产一区| 亚洲精品一卡2卡3卡四卡乱码| 亚洲国产精品成人网址天堂| 免费人成激情视频在线观看冫| 久久精品国产亚洲AV无码娇色 | 亚洲欧洲国产经精品香蕉网| 久久精品女人天堂AV免费观看| 男男黄GAY片免费网站WWW| 国产亚洲日韩一区二区三区| 99精品视频在线观看免费播放| 亚洲看片无码在线视频| 亚洲高清无码专区视频| 3344免费播放观看视频| 精品无码专区亚洲| 亚洲一卡2卡三卡4卡有限公司| 在线A级毛片无码免费真人| 中国内地毛片免费高清|