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

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

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

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
    Volatile修飾的成員變量在每次被線程訪問時,都強(qiáng)迫從共享內(nèi)存中重讀該成員變量的值。而且,當(dāng)成員變量發(fā)生變化時,強(qiáng)迫線程將變化值回寫到共享內(nèi)存。這樣在任何時刻,
    兩個不同的線程總是看到某個成員變量的同一個值。
    
    Java語言規(guī)范中指出:為了獲得最佳速度,允許線程保存共享成員變量的私有拷貝,而且只當(dāng)線程進(jìn)入或者離開同步代碼塊時才與共享成員變量的原始值對比。
    
    這樣當(dāng)多個線程同時與某個對象交互時,就必須要注意到要讓線程及時的得到共享成員變量的變化。
    
    而volatile關(guān)鍵字就是提示VM:對于這個成員變量不能保存它的私有拷貝,而應(yīng)直接與共享成員變量交互。
    
    使用建議:在兩個或者更多的線程訪問的成員變量上使用volatile。當(dāng)要訪問的變量已在synchronized代碼塊中,或者為常量時,不必使用。
    
    由于使用volatile屏蔽掉了VM中必要的代碼優(yōu)化,所以在效率上比較低,因此一定在必要時才使用此關(guān)鍵字。 
    
    
    就跟C中的一樣 禁止編譯器進(jìn)行優(yōu)化~~~~
    在并發(fā)中可保證內(nèi)存一致性
    volatile聲明的變量只在主存中存儲
    讀取的時候,會有讀取臟數(shù)據(jù)的情況發(fā)生
    但是寫數(shù)據(jù)的時候,是能保證數(shù)據(jù)能正確寫入

    volatile只保證每次都從主存拿數(shù)據(jù),其他保證不了什么吧?
    告訴編譯器不要使用緩存

    非long、double變量不能保證原子性,非volatile變量不能保證內(nèi)存可見性。

    volatile 還能防止reorder...
    就是內(nèi)存屏蔽,防止指令重拍
    其實目的就是保證可見性
    可以操作volatile...變量 但是不代表你的操作指令是原子的








    posted on 2012-10-18 10:38 abin 閱讀(346) 評論(0)  編輯  收藏 所屬分類: JavaMultithread
    主站蜘蛛池模板: 国产猛烈高潮尖叫视频免费 | 免费国产真实迷j在线观看| 亚洲高清中文字幕综合网| 免费看无码特级毛片| 亚洲精品无码av人在线观看| 国产免费久久精品丫丫| 国产成人精品日本亚洲专区61 | 亚洲大片在线观看| 国产精品99精品久久免费| 亚洲AV人人澡人人爽人人夜夜| 免费在线观影网站| 亚洲视频在线视频| 日韩国产免费一区二区三区| 亚洲国产成人久久精品app| 日韩一区二区a片免费观看 | 国产在线ts人妖免费视频| 美女视频黄a视频全免费网站一区| 免费一级国产生活片| 国产一级高青免费| 亚洲毛片免费视频| 成人免费看吃奶视频网站| 久久水蜜桃亚洲AV无码精品| 亚洲精品人成无码中文毛片 | 国产精品免费在线播放| 亚洲国产精品成人精品无码区在线| 日韩电影免费观看| 91丁香亚洲综合社区| 全亚洲最新黄色特级网站| 97人妻精品全国免费视频 | 亚洲免费日韩无码系列| 免费在线观影网站| 久久亚洲国产成人影院| 亚洲免费在线观看| 亚洲精品在线免费观看视频| 亚洲AV无码一区二区一二区| 亚洲中文字幕无码久久2017| 久久99九九国产免费看小说| 在线播放免费人成视频网站| 亚洲视频精品在线| 亚洲精品无码AV中文字幕电影网站| 免费女人高潮流视频在线观看|