麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > volatile關鍵字的作用是什么?

volatile關鍵字的作用是什么?

來源:千鋒教育
發布人:wjy
時間: 2022-09-14 15:50:01 1663141801

  防重排序

  我們從一個最經典的例子來分析重排序問題。大家應該都很熟悉單例模式的實現,而在并發環境下的單例實現方式,我們通常可以采用雙重檢查加鎖(DCL)的方式來實現。

  其源碼如下:

volatile關鍵字的作用是什么1

  現在我們分析一下為什么要在變量singleton之間加上volatile關鍵字。要理解這個問題,先要了解對象的構造過程,實例化一個對象其實可以分為三個步驟:

  分配內存空間。 初始化對象。 將內存空間的地址賦值給對應的引用。

  但是由于操作系統可以對指令進行重排序,所以上面的過程也可能會變成如下過程:

  分配內存空間。 將內存空間的地址賦值給對應的引用。 初始化對象

  如果是這個流程,多線程環境下就可能將一個未初始化的對象引用暴露出來,從而導致不可預料的結果。因此,為了防止這個過程的重排序,我們需要將變量設置為volatile類型的變量。

  實現可見性

  可見性問題主要指一個線程修改了共享變量值,而另一個線程卻看不到。引起可見性問題的主要原因是每個線程擁有自己的一個高速緩存區——線程工作內存。

  volatile關鍵字能有效的解決這個問題,我們看下下面的例子,就可以知道其作用:

volatile關鍵字的作用是什么2

  直觀上說,這段代碼的結果只可能有兩種:b=3;a=3 或 b=2;a=1。不過運行上面的代碼(可能時間上要長一點),你會發現除了上兩種結果之外,還出現了另外兩種結果:

volatile關鍵字的作用是什么3

  為什么會出現b=2;a=3和b=3;a=1這種結果呢? 正常情況下,如果先執行change方法,再執行print方法,輸出結果應該為b=3;a=3。相反,如果先執行的print方法,再執行change方法,結果應該是 b=2;a=1。那b=3;a=1的結果是怎么出來的? 原因就是個線程將值a=3修改后,但是對第二個線程是不可見的,所以才出現這一結果。如果將a和b都改成volatile類型的變量再執行,則再也不會出現b=2;a=3和b=3;a=1的結果了。

  保證原子性:單次讀/寫

  volatile不能保證完全的原子性,只能保證單次的讀/寫操作具有原子性。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
開班信息
北京校區
  • 北京校區
  • 大連校區
  • 廣州校區
  • 成都校區
  • 杭州校區
  • 長沙校區
  • 合肥校區
  • 南京校區
  • 上海校區
  • 深圳校區
  • 武漢校區
  • 鄭州校區
  • 西安校區
  • 青島校區
  • 重慶校區
  • 太原校區
  • 沈陽校區
  • 南昌校區
  • 哈爾濱校區
主站蜘蛛池模板: 欧美kkk4444在线观看| 三级很黄很黄的视频| 日日插天天干| 性按摩xxxx| 啊灬啊灬用力灬再用力岳| 最新欧美精品一区二区三区| 久久在精品线影院精品国产| 波多野结衣不打码视频| 久久久久久久综合狠狠综合| 中文字幕无码久久精品| 欧美性猛交xxxx乱大交蜜桃| 欧美金发大战黑人video| 啦啦啦手机完整免费高清观看 | 韩国全部三级伦电影在线播放| 岳女一起爽| 尤物精品视频一区二区三区| 夜夜摸视频网| 国产成在线观看免费视频| 欧美日韩高清完整版在线观看免费| 波多野结衣女上司| 骚虎影院在线观看| 欧美精品久久一区二区三区| 一级免费毛片| 日本不卡1卡2卡三卡四卡最新| 日本免费看片在线播放| 亚洲欧美日韩综合在线播放 | 鲁一鲁射一射| 中文字幕在线国产| 青草国产在线| 国产青青| 2020国产在线| 抽搐一进一出在深一点| 免费看a级毛片| 亚洲国产中文在线视频| 免费看美女部位隐私直播| 草莓污视频在线观看午夜社区 | 成年女人免费视频播放体验区| 爽爽影院在线免费观看| 香港黄页亚洲一级| 国产无套在线观看视频| 99视频免费观看|