无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

怎樣理解線程安全?volatile能解決嗎?

2023-02-11 22:00 作者:云和數(shù)據(jù)何老師  | 我要投稿


線程安全是多線程領(lǐng)域的問(wèn)題,線程安全可以簡(jiǎn)單理解為一個(gè)方法或者一個(gè)實(shí)例可以在多線程環(huán)境中使用而不會(huì)出現(xiàn)問(wèn)題,常見(jiàn)的線程安全需要考慮的問(wèn)題如下:

原子性

原因:多線程下,不同線程的指令發(fā)生了交錯(cuò)導(dǎo)致的共享變量的讀寫混亂。

解決:用悲觀鎖或樂(lè)觀鎖解決,volatile 并不能解決原子性。

可見(jiàn)性

原因:由于編譯器優(yōu)化、或緩存優(yōu)化、或 CPU 指令重排序優(yōu)化導(dǎo)致的對(duì)共享變量所做的修改另外的線程看不到。

解決:用 volatile 修飾共享變量,能夠防止編譯器等優(yōu)化發(fā)生,讓一個(gè)線程對(duì)共享變量的修改對(duì)另一個(gè)線程可見(jiàn)。

有序性

起因:由于編譯器優(yōu)化、或緩存優(yōu)化、或 CPU 指令重排序優(yōu)化導(dǎo)致指令的實(shí)際執(zhí)行順序與編寫順序不一致。

解決:用 volatile 修飾共享變量會(huì)在讀、寫共享變量時(shí)加入不同的屏障,阻止其他讀寫操作越過(guò)屏障,從而達(dá)到阻止重排序的效果。

注意:

volatile 變量寫加的屏障是阻止上方其它寫操作越過(guò)屏障排到 volatile 變量寫之下

volatile 變量讀加的屏障是阻止下方其它讀操作越過(guò)屏障排到volatile 變量讀之上

volatile 讀寫加入的屏障只能防止同一線程內(nèi)的指令重排


怎樣理解線程安全?volatile能解決嗎?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
新乡市| 尚义县| 聊城市| 黎平县| 石棉县| 雷州市| 浮梁县| 海宁市| 天祝| 韩城市| 筠连县| 谷城县| 岱山县| 南京市| 石嘴山市| 祁东县| 海城市| 白银市| 桂东县| 瓦房店市| 噶尔县| 滨州市| 宁远县| 施秉县| 哈尔滨市| 天气| 广丰县| 曲麻莱县| 长乐市| 错那县| 木兰县| 肇庆市| 枝江市| 略阳县| 锡林浩特市| 北碚区| 麻阳| 喀喇沁旗| 普宁市| 冕宁县| 台北县|