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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于java的volatile

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于java的volatile 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于java的volatile

記得早前本人寫過一篇關于C關鍵字volatile一點認知文章

由于最近因業務需要一直在做與java相關的開發。故研究了一下java里的volatile這里與C里的大致相同(注:以下如未特殊說明所有volatile都指java里為主)。

java的內存交互用java的指令分為:lock、unlock、read、load、use、assign、store、write這8種。

其中lock、unlock是同步鎖所產生的(如:synchronized、com.util.concurrent中的原子類)。

默認java會開啟優化模式,也就是說后6種操作(read、load、use、assign、store、write)都可能是無序的。

好了,java內存加載大致就是這樣。

volatile的作用就是【read、load、use】與【assign、store、write】這每組里面的操作都是有序的。也就是說不要讓java優化。

網上也說了很多volatile為啥不是線程安全的,其實說白了上面的二元組中間可以插入其它操作,如:

public class VolatileTest {public static volatile int race = 0;public static void raceIncr() {race++;} }

這里如果調用receIncr方法會大致執行以下操作:

read、load、use、iconst_1、iadd、assign、store、write

那么這里iconst_1、iadd對其它線程來說并不是可見的。。。

故總結,常用還是賦值吧。。

posted on 2017-09-19 17:05 tywei 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/tywei/p/7552783.html

總結

以上是生活随笔為你收集整理的关于java的volatile的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。