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

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

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

    posts - 12, comments - 8, trackbacks - 0, articles - 5
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    volatile的適用場景

    Posted on 2010-11-18 14:45 楊羅羅 閱讀(1711) 評論(0)  編輯  收藏 所屬分類: java.thread

    volatile保證線程間的數據是可見的(共享的),但不保證數據同步

    volatile相當于synchronized的弱實現,也就是說volatile實現了類似synchronized的語義,卻又沒有鎖機制。它確保對volatile字段的更新以可預見的方式告知其他的線程。
    volatile包含以下語義:
    (1)Java 存儲模型不會對valatile指令的操作進行重排序:這個保證對volatile變量的操作時按照指令的出現順序執行的。
    (2)volatile變量不會被緩存在寄存器中(只有擁有線程可見)或者其他對CPU不可見的地方,每次總是從主存中讀取volatile變量的結果。也就是說對于volatile變量的修改,其它線程總是可見的,并且不是使用自己線程棧內部的變量。也就是在happens-before法則中,對一個valatile變量的寫操作后,其后的任何讀操作理解可見此寫操作的結果。

    volatile變量的特性不錯,但是volatile并不能保證線程安全的,也就是說volatile字段的操作不是原子性的,volatile變量只能保證可見性(一個線程修改后其它線程能夠理解看到此變化后的結果),要想保證原子性,目前為止只能加鎖!

    volatile通常在下面的場景:

    volatile boolean done = false;



        
    while( ! done ){
            dosomething();
        }

     應用volatile變量的三個原則:

    (1)寫入變量不依賴此變量的值,或者只有一個線程修改此變量

    (2)變量的狀態不需要與其它變量共同參與不變約束

    (3)訪問變量不需要加鎖

    主站蜘蛛池模板: 国产精品久久久久久久久免费| 亚洲宅男天堂a在线| 毛片A级毛片免费播放| 中国内地毛片免费高清| 国产精品亚洲专区在线播放| 亚洲精品第一国产综合野| 亚洲精品免费视频| 在线亚洲97se亚洲综合在线| 国产精品酒店视频免费看| 最近2019中文字幕免费看最新| 91香焦国产线观看看免费 | 色吊丝永久在线观看最新免费 | 亚洲欧洲日产专区| 午夜亚洲AV日韩AV无码大全| 亚洲精品国产suv一区88| 亚洲高清无在码在线电影不卡| 亚洲三区在线观看无套内射| 亚洲?v女人的天堂在线观看| 在线看片无码永久免费aⅴ| 人禽杂交18禁网站免费| 国产大片免费网站不卡美女| 99精品视频免费在线观看| 国精产品一区一区三区免费视频 | 亚洲免费中文字幕| 一区二区三区四区免费视频 | 亚洲最大AV网站在线观看| 亚洲国产精品日韩| 亚洲av成人一区二区三区在线观看| 男女交性永久免费视频播放| 免费看片免费播放| 国产精品久久香蕉免费播放| 国产美女精品久久久久久久免费| 国产网站免费观看| 亚洲国产人成精品| 亚洲一级片免费看| 亚洲人成色77777| 亚洲va在线va天堂va888www| 久久亚洲AV成人无码国产| 亚洲午夜电影一区二区三区| 国产成人精品日本亚洲直接| 亚洲一区二区三区成人网站|