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

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

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

    posts - 110, comments - 101, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    volatile 與 synchronized 區別

    Posted on 2012-12-01 21:19 云云 閱讀(13708) 評論(0)  編輯  收藏

    在Java中,為了保證多線程讀寫數據時保證數據的一致性,可以采用兩種方式:

    同步

    如用synchronized關鍵字,或者使用鎖對象.

    volatile

    使用volatile關鍵字
    用一句話概括volatile,它能夠使變量在值發生改變時能盡快地讓其他線程知道.

    volatile詳解

    首先我們要先意識到有這樣的現象,編譯器為了加快程序運行的速度,對一些變量的寫操作會先在寄存器或者是CPU緩存上進行,最后才寫入內存.
    而在這個過程,變量的新值對其他線程是不可見的.而volatile的作用就是使它修飾的變量的讀寫操作都必須在內存中進行!

    volatile與synchronized

      volatile本質是在告訴jvm當前變量在寄存器中的值是不確定的,需要從主存中讀取,synchronized則是鎖定當前變量,只有當前線程可以訪問該變量,其他線程被阻塞住.
      volatile僅能使用在變量級別,synchronized則可以使用在變量,方法.
      volatile僅能實現變量的修改可見性,但不具備原子特性,而synchronized則可以保證變量的修改可見性和原子性.
      volatile不會造成線程的阻塞,而synchronized可能會造成線程的阻塞.
      volatile標記的變量不會被編譯器優化,而synchronized標記的變量可以被編譯器優化.

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲激情视频在线观看| 无码少妇一区二区浪潮免费| 亚洲综合无码无在线观看| 亚洲中文字幕无码av在线| 亚洲国产精品ⅴa在线观看| 国产免费一区二区三区免费视频| 久久亚洲免费视频| 免费观看毛片视频| 91久久青青草原线免费| 成年女人视频网站免费m | 亚洲免费二区三区| 一级做a免费视频观看网站| 香蕉成人免费看片视频app下载| 免费无码一区二区三区蜜桃大 | 亚洲精品无码久久毛片波多野吉衣| 亚洲精品乱码久久久久蜜桃| 在线免费观看一级毛片| 亚洲综合在线观看视频| 一区二区在线视频免费观看| 日本红怡院亚洲红怡院最新| 亚洲欧美日韩中文字幕一区二区三区 | 少妇无码一区二区三区免费| 亚洲欧洲精品国产区| 日韩高清免费观看| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲午夜免费视频| 99re热免费精品视频观看| 国内精品久久久久影院亚洲| 国产精品永久免费视频| 天天摸夜夜摸成人免费视频| 久久亚洲精品无码gv| 成全视频免费高清 | 免费看无码特级毛片| 国产成人免费a在线资源| 国产精品亚洲精品青青青| 免费成人高清在线视频| 国产日产亚洲系列| 美女羞羞喷液视频免费| 亚洲无线一二三四区手机| 亚洲老熟女五十路老熟女bbw | 国产免费av片在线播放|