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

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

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

    少年阿賓

    那些青春的歲月

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

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

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

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








    posted on 2012-10-18 10:38 abin 閱讀(341) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): JavaMultithread
    主站蜘蛛池模板: 67194在线午夜亚洲| 欧美在线看片A免费观看| 亚洲av无码专区首页| 亚洲AV永久纯肉无码精品动漫| 免费看美女让人桶尿口| 亚洲精品国产免费| a毛片全部播放免费视频完整18| 日本系列1页亚洲系列| 亚洲人成网站色在线观看| 亚洲第一成年男人的天堂| 亚洲日韩精品一区二区三区| 亚洲AV无码乱码在线观看性色扶| 成年女人午夜毛片免费看| 91免费国产在线观看| 久99久精品免费视频热77| 在线观看片免费人成视频播放| 国产成人亚洲综合无| 亚洲精品久久无码av片俺去也| 亚洲伊人久久大香线蕉在观| 久久综合亚洲色HEZYO社区| 亚洲AV日韩精品久久久久久久 | 中文字幕 亚洲 有码 在线| 亚洲一区二区成人| 久久精品亚洲视频| 亚洲AV无码不卡无码| 久久噜噜噜久久亚洲va久| 亚洲情XO亚洲色XO无码| 亚洲一区二区三区在线观看精品中文| 亚洲综合精品网站在线观看| 亚洲人成国产精品无码| 国产亚洲精品免费视频播放| 浮力影院亚洲国产第一页| 亚洲人成伊人成综合网久久久| 日韩亚洲变态另类中文| 亚洲中文字幕无码永久在线| 亚洲精品二区国产综合野狼| 国产亚洲3p无码一区二区| 香蕉蕉亚亚洲aav综合| 亚洲精品无码久久久久久久 | 国产免费久久精品99久久| 亚洲天堂免费在线视频|