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

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

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

    隨筆 - 2  文章 - 2  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿

    隨筆檔案(1)

    文章分類(16)

    最新隨筆

    搜索

    •  

    最新評論

     http://www.ibm.com/developerworks/cn/java/j-jtp06197.html  一文筆記

    在java中,為了提高性能,線程一般把變量從內存中備份一個副本到寄存器。volatile 關鍵字意思是易失性,明確表示
    一個變量是會被多線程訪問的,每個線程在每次讀取都要從內存讀取原始副本的值,而不是緩存在寄存器中的值。每次修改
    都是把值寫回到內存中。

    Java語言包含兩種內在的同步機制:同步塊(或方法)和 volatile 變量。

    synchronized鎖提供了兩種主要特性:互斥(mutual exclusion)可見性(visibility)。互斥即一次只允許一個線程持有某個特定的鎖,因此可使用該特性實現對共享數據的協調訪問協議,這樣,一次就只有一個線程能夠使用該共享數據。可見性必須確保釋放鎖之前對共享數據做出的更改對于隨后獲得該鎖的另一個線程是可見的。 否則,線程看到的共享變量可能是修改前的值或不一致的值,引發嚴重問題。

    volatile能夠實現上述可見性,因為線程每次都是讀取原始版本的值,前一個線程的修改對后續線程來說是可見的。但volatile不能確保互斥。

    volatile適用的原則:
    • 對變量的寫操作不依賴于當前值。
    • 該變量沒有包含在具有其他變量的不變式中。
    所以volatile不能用作計數器,因為計數器的自增是一個讀-增-寫的過程,不是原子操作,在volatile不確保互斥的情況下,結果不準確。
    不變式的意思是一個需要不變的規律,如起始要小于等于結束。上述2點簡單來說:即變量真正獨立于其他變量和自己以前的值 , 在這些
    情況下可以使用 volatile 代替 synchronized 來簡化代碼。

    volatile由于不阻塞線程,在性能一般比synchronized表現更好。

    適用volatile的幾個場景:
    1、狀態標志  比如標示服務啟動或停止。
    2、獨立觀察  定期 “發布” 觀察結果供程序內部使用,
    3、結合使用 volatile 和 synchronized 實現 “開銷較低的讀-寫鎖”
    @ThreadSafe
    public class CheesyCounter {
    private volatile int value;
    // 使用volatile實現可見性,開銷低
    public int getValue() { return value; }
    // 使用synchronized實現互斥
    public synchronized int increment() {
    return value++;
    }
    }



    posted on 2011-04-08 16:28 liucs 閱讀(372) 評論(0)  編輯  收藏 所屬分類: Java

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 中文字幕免费视频一| 嫩草在线视频www免费看| 美女网站免费福利视频| 亚洲国产综合专区电影在线| 国产一级片免费看| 亚洲国产精品无码专区在线观看 | 亚洲无mate20pro麻豆| 999国内精品永久免费观看| 亚洲欧洲国产经精品香蕉网| 又粗又大又黑又长的免费视频| 久久精品国产99国产精品亚洲| 欧洲乱码伦视频免费| 色天使色婷婷在线影院亚洲| 国产精品视频免费一区二区三区| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 亚洲Av无码乱码在线观看性色| 真人无码作爱免费视频| 国产国拍亚洲精品福利| 久久精品夜色噜噜亚洲A∨| 亚洲日产乱码一二三区别| 日韩免费视频播播| CAOPORN国产精品免费视频| 亚洲国产精品一区二区久久| 成人黄色免费网站| 亚洲AV综合色区无码一二三区| 无码不卡亚洲成?人片| 99久久免费国产特黄| 亚洲精品动漫在线| 韩国欧洲一级毛片免费| eeuss在线兵区免费观看| 四虎免费久久影院| 四虎国产精品免费永久在线| 亚洲成综合人影院在院播放| 全免费一级毛片在线播放| xvideos永久免费入口| 亚洲精品国产手机| 亚洲成人国产精品| 最近免费中文字幕大全免费| 蜜臀亚洲AV无码精品国产午夜.| 亚洲色欲一区二区三区在线观看| 桃子视频在线观看高清免费完整|