久久精品国产99国产精品,农村大炕弄老女人,人马配速90分钟,香蕉成人伊视频在线观看

java如何保證冪等性 volatile關鍵字在Java中有什么作用?

volatile關鍵字在Java中有什么作用?Volatile是為了防止指令重排序以確??梢娦詫τ贘VM級別,它是為了防止編譯器重排序同時,對于某些CPU,它們會通過緩存鎖或線程來解決緩存可見性但是,

volatile關鍵字在Java中有什么作用?

Volatile是為了防止指令重排序以確??梢娦?/p>

對于JVM級別,它是為了防止編譯器重排序

同時,對于某些CPU,它們會通過緩存鎖或線程來解決緩存可見性

但是,目前很多CPU已經過優化,因為緩存一致性MESI會帶來性能開銷,因此使用storebuffer機制來進行異步處理,而這種機制會導致指令的無序執行。這會導致可見性問題。

然后volatile將在CPU級別增加內存屏障,以解決由于CPU執行無序而導致的可見性問題

簡要說明以下原因:

鎖定是因為操作不是原子的。讓我們把我的手術作為一個解釋。參見下面兩個圖。

我這個操作需要

看上面的第二個圖,你能很清楚地理解這個過程嗎?

鎖定是為了確保上述三個步驟是原子操作。

回到問題上來,只有一個線程要寫,沒有競爭,所以不需要鎖定。

但是,如果你看第一張圖片,因為主內存和本地內存的存在

在一個線程寫入后,其他線程無法立即看到它。這就是可見性問題。

添加volatile關鍵字后,它將在操作后強制工作內存和主內存同步,以確保其他線程可以立即看到它。

主站蜘蛛池模板: 中西区| 固镇县| 宁河县| 临高县| 凌海市| 驻马店市| 游戏| 固原市| 安龙县| 邵武市| 咸丰县| 扶余县| 大石桥市| 乌鲁木齐县| 拜城县| 顺平县| 固原市| 遵义县| 琼海市| 马尔康县| 长武县| 罗田县| 嘉兴市| 罗平县| 精河县| 新密市| 比如县| 甘南县| 诸城市| 东明县| 永平县| 辽源市| 湖口县| 射洪县| 应用必备| 安图县| 阿克陶县| 鹿泉市| 安化县| 保德县| 安阳县|