最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用volatile關(guān)鍵字的注意事項

 更新時間:2017年02月13日 16:17:30   投稿:mrr  
volatile關(guān)鍵字是Java中的一種稍弱的同步機制,為什么稱之為弱機制。這篇文章主要介紹了Java使用volatile關(guān)鍵字的注意事項,需要的朋友可以參考下

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

volatile關(guān)鍵字是Java中的一種稍弱的同步機制,為什么稱之為弱機制。

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

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

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

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

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

 2、變量不需要與其他的狀態(tài)變量共同參與不變約束

例:

volatile boolrean flag;
public void close(){
    flag = true;
}
public void open(){
   while(!flag){
    ...
   }
}

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

volatile關(guān)鍵字原理:

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

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

相關(guān)文章

  • Java @SentinelResource全面介紹

    Java @SentinelResource全面介紹

    在實際應用過程中,我們可能需要限流的層面不僅限于接口??赡軐τ谀硞€方法的調(diào)用限流,對于某個外部資源的調(diào)用限流等都希望做到控制。對此,我們需要學習使用@SentinelResource注解,靈活的定義控制資源以及如何配置控制策略
    2022-08-08
  • 淺談maven 多環(huán)境打包發(fā)布的兩種方式

    淺談maven 多環(huán)境打包發(fā)布的兩種方式

    這篇文章主要介紹了淺談maven 多環(huán)境打包發(fā)布的兩種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • java高并發(fā)ScheduledThreadPoolExecutor與Timer區(qū)別

    java高并發(fā)ScheduledThreadPoolExecutor與Timer區(qū)別

    這篇文章主要為大家介紹了java高并發(fā)ScheduledThreadPoolExecutor與Timer區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Java下載文件時文件名亂碼問題解決辦法

    Java下載文件時文件名亂碼問題解決辦法

    我最近在開發(fā)時遇到了文件另存為時文件名出現(xiàn)亂碼,在火狐上正常的文件名,在IE中又出現(xiàn)亂碼問題,然后好不容易在IE下調(diào)試好了文件名亂碼問題,在火狐下又出現(xiàn)亂碼,最后終于感覺這樣是能解決了。具體如下:
    2013-04-04
  • IDEA控制臺日志中文亂碼解決方案(好用!)

    IDEA控制臺日志中文亂碼解決方案(好用!)

    這篇文章主要給大家介紹了關(guān)于IDEA控制臺日志中文亂碼解決的相關(guān)資料,平常的開發(fā)中,我們通常會用到日志打印進行開發(fā),文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • SpringCloud超詳細講解微服務網(wǎng)關(guān)Gateway

    SpringCloud超詳細講解微服務網(wǎng)關(guān)Gateway

    這篇文章主要介紹了SpringCloud Gateway微服務網(wǎng)關(guān),負載均衡,熔斷和限流,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 使用Nexus搭建Maven私服教程的方法步驟

    使用Nexus搭建Maven私服教程的方法步驟

    本文主要介紹了使用Nexus搭建Maven私服教程的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • java 使用策略模式操作JDBC數(shù)據(jù)庫

    java 使用策略模式操作JDBC數(shù)據(jù)庫

    這篇文章主要介紹了java 使用策略模式操作JDBC數(shù)據(jù)庫的相關(guān)資料,這里提供實例實現(xiàn)對JDBC數(shù)據(jù)庫的操作增刪改查的功能,需要的朋友可以參考下
    2017-08-08
  • java控制臺輸出圖書館管理系統(tǒng)

    java控制臺輸出圖書館管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java控制臺輸出圖書館管理系統(tǒng),只用java代碼不用數(shù)據(jù)庫和GUI等,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • JAVA遍歷Map集合的幾種方法匯總

    JAVA遍歷Map集合的幾種方法匯總

    這篇文章主要給大家介紹了關(guān)于JAVA遍歷Map集合的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03

最新評論

稷山县| 勃利县| 江川县| 东港市| 枣庄市| 宁德市| 柏乡县| 巴彦淖尔市| 武宁县| 永福县| 行唐县| 汉中市| 土默特左旗| 新密市| 台江县| 崇义县| 桂平市| 孟津县| 丹阳市| 油尖旺区| 龙陵县| 河北省| 应城市| 油尖旺区| 黑河市| 即墨市| 栾城县| 巴彦县| 新建县| 库伦旗| 万盛区| 成都市| 筠连县| 保亭| 汶川县| 浏阳市| 伊川县| 临猗县| 乌拉特中旗| 蒙山县| 城市|