<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)訪問變量不需要加鎖

    主站蜘蛛池模板: 亚洲制服丝袜第一页| 亚洲免费人成在线视频观看 | 亚洲经典在线观看| 亚洲日本一区二区三区在线不卡| 无码人妻一区二区三区免费手机| 免费在线观影网站| 激情无码亚洲一区二区三区| 亚洲妇女水蜜桃av网网站| 国产亚洲人成无码网在线观看| 日本免费福利视频| 在人线av无码免费高潮喷水| 久久免费动漫品精老司机| 人人鲁免费播放视频人人香蕉| 亚洲真人无码永久在线观看| 亚洲欧洲免费视频| 亚洲AV无码久久寂寞少妇| 在线日韩日本国产亚洲| 亚洲а∨天堂久久精品| 国产网站免费观看| 在线免费观看一级毛片| 四虎免费在线观看| 野花高清在线观看免费3中文| 222www在线观看免费| 午夜不卡久久精品无码免费 | 久久亚洲国产成人精品无码区| 免费国产精品视频| 国产美女无遮挡免费视频| 成人男女网18免费视频| 国产福利在线免费| 免费观看黄网站在线播放| 最新欧洲大片免费在线| 99久久免费国产精品特黄| 在线观看免费为成年视频| 永久免费观看的毛片的网站| 女人18毛片特级一级免费视频| 免费精品一区二区三区在线观看| 成年午夜视频免费观看视频 | 国产成人va亚洲电影| 亚洲精品国产精品| 美国毛片亚洲社区在线观看| 精品国产亚洲一区二区三区在线观看 |