日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

24.volatile关键字的作用、volatile原理、可见性、内存屏障、volatile性能、transient

發(fā)布時(shí)間:2024/9/27 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 24.volatile关键字的作用、volatile原理、可见性、内存屏障、volatile性能、transient 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

24.volatile關(guān)鍵字的作用
24.1.volatile原理
24.2.可見(jiàn)性
24.3.內(nèi)存屏障
24.4.volatile性能
25.transient

24.volatile關(guān)鍵字的作用

volatile在Java并發(fā)編程中常用于保持內(nèi)存可見(jiàn)性和防止指令重排序。

24.1.volatile原理

被volatile關(guān)鍵字修飾的變量,編譯器與運(yùn)行時(shí)都會(huì)注意到這個(gè)變量是共享的,因此不會(huì)將該變量上的操作與其他內(nèi)存操作一起重排序。volatile變量不會(huì)被緩存在寄存器或者對(duì)其他處理器不可見(jiàn)的地方,因此在讀取volatile類型的變量時(shí)總會(huì)返回最新寫(xiě)入的值。

在訪問(wèn)volatile變量時(shí)不會(huì)執(zhí)行加鎖操作,因此也就不會(huì)使執(zhí)行線程阻塞,因此volatile變量是一種比sychronized關(guān)鍵字更輕量級(jí)的同步機(jī)制。當(dāng)對(duì)非 volatile 變量進(jìn)行讀寫(xiě)的時(shí)候,每個(gè)線程先從內(nèi)存拷貝變量到CPU緩存中。如果計(jì)算機(jī)有多個(gè)CPU,每個(gè)線程可能在不同的CPU上被處理,這意味著每個(gè)線程可以拷貝到不同的 CPU cache中。

而聲明變量是 volatile 的,JVM 保證了每次讀變量都從內(nèi)存中讀,跳過(guò) CPU cache 這一步。

volatile在Java并發(fā)編程中常用于保持內(nèi)存可見(jiàn)性和防止指令重排序。內(nèi)存可見(jiàn)性(Memory Visibility):所有線程都能看到共享內(nèi)存的最新?tīng)顟B(tài);防止指令重排:在基于偏序關(guān)系的Happens-Before內(nèi)存模型中,指令重排技術(shù)大大提高了程序執(zhí)行效率,但同時(shí)也引入了一些問(wèn)題。

24.2.可見(jiàn)性

volatile保持內(nèi)存可見(jiàn)性的特殊規(guī)則:read、load、use動(dòng)作必須連續(xù)出現(xiàn);assign、store、write動(dòng)作必須連續(xù)出現(xiàn);每次讀取前必須先從主內(nèi)存刷新最新的值;每次寫(xiě)入后必須立即同步回主內(nèi)存當(dāng)中。

也就是說(shuō),volatile關(guān)鍵字修飾的變量看到的隨時(shí)是自己的最新值。在線程1中對(duì)變量v的最新修改,對(duì)線程2是可見(jiàn)的。

24.3.內(nèi)存屏障

volatile防止指令重排的策略:在每個(gè)volatile寫(xiě)操作的前面插入一個(gè)StoreStore屏障;在每個(gè)volatile寫(xiě)操作的后面插入一個(gè)StoreLoad屏障;在每個(gè)volatile讀操作的后面插入一個(gè)LoadLoad屏障;在每個(gè)volatile讀操作的后面插入一個(gè)LoadStore屏障。

24.4.volatile性能

volatile的讀性能消耗與普通變量幾乎相同,但是寫(xiě)操作稍慢,因?yàn)樗枰诒镜卮a中插入許多內(nèi)存屏障指令來(lái)保證處理器不發(fā)生亂序執(zhí)行。

25.transient

https://blog.csdn.net/u012723673/article/details/80699029
https://www.cnblogs.com/tiantanglw/p/9142895.html

總結(jié)

以上是生活随笔為你收集整理的24.volatile关键字的作用、volatile原理、可见性、内存屏障、volatile性能、transient的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。