一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java使用volatile關鍵字的注意事項

Java使用volatile關鍵字的注意事項

2020-08-10 19:06java教程網 Java教程

volatile關鍵字是Java中的一種稍弱的同步機制,為什么稱之為弱機制。這篇文章主要介紹了Java使用volatile關鍵字的注意事項,需要的朋友可以參考下

 Volatile 變量具有 synchronized 的可見性特性,但是不具備原子特性。這就是說線程能夠自動發現 volatile 變量的最新值。Volatile 變量可用于提供線程安全,但是只能應用于非常有限的一組用例:多個變量之間或者某個變量的當前值與修改后值之間沒有約束。因此,單獨使用 volatile 還不足以實現計數器、互斥鎖或任何具有與多個變量相關的不變式。

volatile關鍵字Java中的一種稍弱的同步機制,為什么稱之為弱機制。

 在理解這個之前,我們先來看看java在進行同步時必須遵守的兩個機制:

 1、可見性:當一個線程修改一個共享變量時,另外一個線程能讀到這個修改的值。

 2、原子性:指不可分割,此處指程序執行過程中,某操作不能中斷,則為原子操作。

 volatile關鍵字不能保證原子性,只能保證可見性,故在一般情況下不能使用該關鍵字進行同步操作。但是當滿足以下兩個特定條件時,可以使用其進行同步:

 1、運算結果并不依賴變量的當前值,或者能夠保證只有單一的線程修改變量的值。

 2、變量不需要與其他的狀態變量共同參與不變約束

例:

?
1
2
3
4
5
6
7
8
9
volatile boolrean flag;
public void close(){
    flag = true;
}
public void open(){
   while(!flag){
    ...
   }
}

 此時open()方法的執行依賴flag的值,必須使用同步,但是使用synchronized關鍵字或者其他方法同步比較繁瑣,此時該情景符合以上兩個條件,故可以使用volatile關鍵字進行同步。

volatile關鍵字原理:

  被volatile修飾的變量,不會被緩存在寄存器或者其他地方,每次寫直接寫去主內存,讀也是從主內存讀取。所以可以保證可見性。

以上所述是小編給大家介紹的Java使用volatile關鍵字的注意事項,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 操大姨子逼 | 99久久精品国产免看国产一区 | 久久嫩草影院网站 | 欧美久久久久久久一区二区三区 | 日韩在线一区 | 国产亚洲精品91 | 国产99re在线观看69热 | 国产3p绿奴在线视频 | 日本噜噜影院 | 色综合视频在线观看 | 国内9lporm自拍视频区 | 日韩欧美一区黑人vs日本人 | 日韩一级在线观看 | 午夜看片a福利在线观看 | 国产rpg迷雾之风冷狐破解 | 2022最新国产在线不卡a | 91尤物在线 | 亚洲不卡视频 | 久久无码AV亚洲精品色午夜麻豆 | 秋霞鲁丝影院久久人人综合 | 免费岛国片 | 日本在线观看视频网站 | 亚洲AV无码一区二区三区乱子伦 | 精品人伦一区二区三区潘金莲 | 男人使劲躁女人小视频 | 天天操天天爽天天射 | 波多洁野衣一二区三区 | 国产亚洲女在线线精品 | 厨房play黄瓜进去小说h | 国产日韩视频一区 | 精品日韩欧美一区二区三区在线播放 | 成人精品视频 成人影院 | 免费视频 久久久 | 女教师系列三上悠亚在线观看 | 久久免费看少妇级毛片蜜臀 | 欧美精品国产第一区二区 | 精品国产免费第一区二区三区日韩 | 人体做爰aaaa免费 | 成年性午夜免费视频网站不卡 | 女教师被学生糟蹋三天 | 亚洲高清无码在线 视频 |