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

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

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

    java中關鍵字volatile的含義(轉)

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

    這在JVM 1.2之前,Java的內存模型實現總是從主存讀取變量,是不需要進行特別的注意的。而隨著JVM的成熟和優化,現在在多線程環境下volatile關鍵字的使用變得非常重要。

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

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

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

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

    這樣當多個線程同時與某個對象交互時,就必須要注意到要讓線程及時的得到共享成員變量的變化。

    而volatile關鍵字就是提示VM:對于這個成員變量不能保存它的私有拷貝,而應直接與共享成員變量交互。

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

    由于使用volatile屏蔽掉了VM中必要的代碼優化,所以在效率上比較低,因此一定在必要時才使用此關鍵字。

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


    同時查看下IBM中的詳細解釋:

    Java 理論與實踐: 正確使用 Volatile 變量

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

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

    導航

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

    統計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    agile

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 91在线亚洲综合在线| 国内精品免费视频精选在线观看| 日韩一级免费视频| 亚洲国产高清视频在线观看| 一个人免费观看日本www视频| 免费成人高清在线视频| 久久综合亚洲色HEZYO国产| 日韩免费在线中文字幕| 亚洲美女在线国产| 亚洲成aⅴ人片在线影院八| 国产人成免费视频网站| 亚洲噜噜噜噜噜影院在线播放| 久久亚洲国产成人精品性色| 亚洲aⅴ无码专区在线观看| 成人人观看的免费毛片| 国产亚洲精品精品精品| 亚洲午夜精品久久久久久浪潮| 亚洲女久久久噜噜噜熟女| 亚洲一级片在线播放| 免费无码av片在线观看| 91亚洲国产成人精品下载| AAAAA级少妇高潮大片免费看| 国产午夜成人免费看片无遮挡| 青青草a免费线观a| 亚洲区日韩精品中文字幕| 亚洲第一视频在线观看免费| 曰批全过程免费视频在线观看无码 | 国产免费怕怕免费视频观看| 久久精品亚洲一区二区三区浴池| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 亚洲日韩精品一区二区三区| 国产三级在线免费| 亚洲娇小性xxxx| 无码中文在线二区免费| 亚洲最大在线观看| 国产人妖ts在线观看免费视频| 亚洲午夜理论片在线观看| 亚洲欧洲中文日韩av乱码| 67pao强力打造国产免费| 亚洲综合无码一区二区三区| 三年片在线观看免费观看高清电影|