91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

      手機站
      千鋒教育

      千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

      千鋒教育

      掃一掃進入千鋒手機站

      領(lǐng)取全套視頻
      千鋒教育

      關(guān)注千鋒學(xué)習(xí)站小程序
      隨時隨地免費學(xué)習(xí)課程

      當(dāng)前位置:首頁  >  應(yīng)聘面試  >  Java面試題  > volatile關(guān)鍵字有什么作用(變量可見性、禁止重排序)

      volatile關(guān)鍵字有什么作用(變量可見性、禁止重排序)

      來源:千鋒教育
      發(fā)布人:wjy
      時間: 2022-07-19 17:12:00 1658221920

        volatile關(guān)鍵字有什么作用(變量可見性、禁止重排序)

        1. volatile簡介

        Java 語言提供了一種稍弱的同步機制,即 volatile 變量,用來確保將變量的更新操作通知到其他線程。volatile 變量具備兩種特性,volatile 變量不會被緩存在寄存器或者對其他處理器不可見的地方,因此在讀取 volatile 類型的變量時總會返回最新寫入的值。

        變量可見性其一是保證該變量對所有線程可見,這里的可見性指的是當(dāng)一個線程修改了變量的值,那么新的值對于其他線程是可以立即獲取的。

      volatile關(guān)鍵字有什么作用

        2. 禁止重排序

        volatile 禁止了指令重排。它是一種比*sychronized* 更輕量級的同步鎖。

        我們在訪問 volatile 變量時不會執(zhí)行加鎖操作,因此也就不會使執(zhí)行線程阻塞,因此 volatile 變量是一種比 sychronized 關(guān)鍵字更輕量級的同步機制。volatile 適合這種場景:一個變量被多個線程共享,線程直接給這個變量賦值。

        當(dāng)對非 volatile 變量進行讀寫的時候,每個線程先從內(nèi)存拷貝變量到 CPU 緩存中。如果計算機有多個 CPU,每個線程可能在不同的 CPU 上被處理,這意味著每個線程可以拷貝到不同的 CPU cache 中。而聲明變量是 volatile 的,JVM 保證了每次讀變量都從內(nèi)存中讀,跳過 CPU cache 這一步。

        適用場景值得說明的是對 volatile 變量的單次讀/寫操作可以保證原子性的,如 long 和 double 類型變量,但是并不能保證 i++這種操作的原子性,因為本質(zhì)上 i++是讀、寫兩次操作。在某些場景下可以代替 Synchronized。但是,volatile 的不能完全取代 Synchronized 的位置,只有在一些特殊的場景下,才能適用 volatile??偟膩碚f,必須同時滿足下面兩個條件才能保證在并發(fā)環(huán)境的線程安全:

        對變量的寫操作不依賴于當(dāng)前值(比如 i++),或者說是單純的變量賦值(boolean flag = true)。

        該變量沒有包含在具有其他變量的不變式中,也就是說,不同的 volatile 變量之間,不能互相依賴。只有在狀態(tài)真正獨立于程序內(nèi)其他內(nèi)容時才能使用 volatile。

        更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗,課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實現(xiàn)java程序員夢想。

      tags:
      聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
      10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
      請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
      免費領(lǐng)取
      今日已有369人領(lǐng)取成功
      劉同學(xué) 138****2860 剛剛成功領(lǐng)取
      王同學(xué) 131****2015 剛剛成功領(lǐng)取
      張同學(xué) 133****4652 剛剛成功領(lǐng)取
      李同學(xué) 135****8607 剛剛成功領(lǐng)取
      楊同學(xué) 132****5667 剛剛成功領(lǐng)取
      岳同學(xué) 134****6652 剛剛成功領(lǐng)取
      梁同學(xué) 157****2950 剛剛成功領(lǐng)取
      劉同學(xué) 189****1015 剛剛成功領(lǐng)取
      張同學(xué) 155****4678 剛剛成功領(lǐng)取
      鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
      董同學(xué) 138****2867 剛剛成功領(lǐng)取
      周同學(xué) 136****3602 剛剛成功領(lǐng)取
      相關(guān)推薦HOT
      面向?qū)ο缶幊痰奶卣魇鞘裁?請解釋每個特征

      答案:面向?qū)ο缶幊痰奶卣靼ǎ悍庋b(Encapsulation):封裝是將相關(guān)的數(shù)據(jù)和方法組合在一起形成類的機制。它可以隱藏內(nèi)部實現(xiàn)細(xì)節(jié),只暴露必要的...詳情>>

      2023-07-18 13:56:00
      容器是什么?如何理解容器

        容器(Container)是一個廣泛的概念,指的是一種可以容納其他元素或?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)或抽象概念。在計算機科學(xué)中,容器的概念經(jīng)常出現(xiàn)在數(shù)據(jù)結(jié)...詳情>>

      2023-05-08 13:41:00