java內存模型——volatile的可見性
volatile的使用與線程安全關系密切,主要作用是使變量在多個線程間可見,另外也有防止指令重排的作用。
(相關資料圖)
比如主內存中有變量a=0,線程1設置a=10,線程2再操作a的時候,是以a=10的基礎上進行操作,否則會影響邏輯!
0 1volatile的可見性
要了解volatile的可見性,首先得了解java內存模型:
java內存模型
Java內存模型由Java虛擬機規范定義,用來屏蔽各個平臺的硬件差異。簡單來說:
1. 所有變量儲存在主內存。
2. 每條線程擁有自己的工作內存,其中保存了主內存中線程使用到的變量的副本。
3. 線程不能直接讀寫主內存中的變量,所有操作均在工作內存中完成。
線程,主內存,工作內存的交互關系如下圖所示
如下列代碼所示,rt啟動之后修改isRunning的值為false,此時while循環不會停止,因為run方法里得不到改變之后的isRunning。
解決:使用volatile修飾isRunning,這樣當isRunning的值改變之后,會立即刷新到主內存里,工作內存也能立即獲取到新的值
public class RunThread extends Thread {private boolean isRunning = true; private void setRunning(boolean isRunning){this.isRunning = isRunning; } public void run () {System.out.println("進入run方法"); while(isRunning == true){//... } System.out.println("線程停止"); } public static void main(String[] args) {RunThread rt = new RunThread(); rt.start(); try {Thread.sleep(3000); rt.setRunning(false); System.out.println("isRunning的值已經被設置成false"); Thread.sleep(1000); System.out.println(rt.isRunning); } catch (InterruptedException e) {// TODO Auto-generated catch block e.printStackTrace(); } }}
0 2volatile能防止指令重排
如下列代碼所示,這是單例模式的雙檢鎖寫法
public class SingletonTest {private volatile static SingletonTest instance = null; private SingletonTest() { } public static SingletonTest getInstance() {if(instance == null) {synchronized (SingletonTest.class){if(instance == null) {instance = new SingletonTest(); //非原子操作 } } } return instance; }}
我們看到instance用了volatile修飾,由于 instance = new SingletonTest();可分解為:
1.memory =allocate(); //分配對象的內存空間2.ctorInstance(memory); //初始化對象3.instance =memory; //設置instance指向剛分配的內存地址
操作2依賴1,但是操作3不依賴2,所以有可能出現1,3,2的順序,當出現這種順序的時候,雖然instance不為空,但是對象也有可能沒有正確初始化,會出錯。
而使用volatile修飾instance之后,不會出現亂序的行為!
0 3volatile不保證原子性以及解決方式
1.什么是原子性?
下列語句中,哪些是原子性操作?
x = 10; //語句1y = x; //語句2x++; //語句3x = x + 1; //語句4
語句1 是直接將數值 10 賦值給 x,也就是說線程執行這個語句的會直接將數值 10 寫入到工作內存中;
語句2 實際上包含兩個操作,它先要去讀取 x 的值,再將 x 的值寫入工作內存。雖然,讀取 x 的值以及 將 x 的值寫入工作內存這兩個操作都是原子性操作,但是合起來就不是原子性操作了;
同樣的,x++ 和 x = x+1 包括3個操作:讀取 x 的值,進行加 1 操作,寫入新的值。
只有 語句1 的操作具備原子性。也就是說,只有簡單的讀取、賦值(而且必須是將數字賦值給某個變量,變量之間的相互賦值不是原子操作)才是原子操作!
2.舉例
如下列代碼所示,使用volatile修飾的變量count,利用10個線程分別對count進行++操作,而根據上面的表述,++操作不是原子操作!每個線程加1000個數,打印的結果中一定有一個是10000才是對的,但是實際上并不是這樣!因為volatile不保證原子性!
public class VolatileNoAtomic extends Thread{private static volatile int count;// private static AtomicInteger count = new AtomicInteger(0); private static void addCount(){for (int i = 0; i < 1000; i++) {count ++;// count.incrementAndGet(); } System.out.println(count); } public void run(){addCount(); } public static void main(String[] args) {VolatileNoAtomic[] arr = new VolatileNoAtomic[10]; for (int i = 0; i < arr.length; i++) {arr[i] = new VolatileNoAtomic(); } for (int i = 0; i < arr.length; i++) {arr[i].start(); } }}
解決:
方法1:使用原子類Atomic類的系列對象,這樣既不會阻塞,又能保證原子性!
方法2:使用synchronized修飾addCount方法,這樣做的話,線程同步之后會有阻塞,運行時間加長,而且volatile將會失效,不建議這么改
方法3:使用Lock加鎖,當然,跟方法2一樣的有阻塞
● 架構系列——使用synchronized需要注意什么細節
● 架構系列——線程實現方式以及生命周期的探索
● 架構系列——并發、并行與多線程關系探索
● 架構系列——單體、分布式、集群與冗余的探索
● Java反射:框架設計的靈魂
● 高并發秒殺系統如何設計與優化
● 要準備多少東西去面試---java中高級面試總結(值得收藏)
● 最近的面試有感(7個方面)
● java中的參數傳遞(只有值傳遞沒有引用傳遞)
● 38張史上最全的IT工程師技能圖譜(高清收藏)
● PLSQL連接本地oracle或遠程oracle數據庫,實現隨意切換(送福利)
● 通過數據泵expdp、impdp方式備份與還原Oracle數據庫--值得收藏
● java常見排序算法--選擇排序、冒泡排序、插入排序分析與比較
標簽:
相關推薦:
精彩放送:
- []運通商旅Q4收入恢復至2019年同期75%,酒店需求增速高于機票
- []加倉!加倉!巴菲特出手 再買入790萬股!投資大佬段永平:“感覺到味道了”
- []微資訊!北京1-2月實現社會消費品零售總額2314.9億元 較上年收窄2.6個百分點
- []科瑞思:深耕研發奠定成長基石,磁性元器件繞線龍頭開啟新股申購
- []北京1-2月房地產新開工133.5萬平米 住宅銷售面積增長4%
- []麥迪科技:股票價格的漲跌受政策、行業、二級市場等多方面因素的影響,敬請注意投資風險,理性看待股價波動
- []【全球新要聞】現場丨房訊網劉凱:2023年商業地產從開發思維轉向運營思維
- []世界看熱訊:安聯銳視:公司與硅谷銀行無業務往來,上述事件對公司無影響
- []現場丨全聯房地產商會趙正挺:金融創新、數字經濟綠色低碳賦能房地產行業新模式
- []價格空前“內卷”,傳祺價值為王,多重鉅惠助力汽車消費
- []凱發電氣:公司在俄羅斯和烏克蘭沒有在執行項目
- []世界熱文:銀河證券:美國通脹上半年回落趨勢仍在 3月預計加息25BP
- []西安旅游多元化發展坎坷:旅游收入低迷,商貿難扛大旗
- []環球新消息丨角逐年度投資主線 基金調倉換股
- []每日精選:國泰君安:中西藥品數據表現強勁 藥店景氣度持續
- []環球看熱訊:天恒置業:公司總經理目前正接受紀律審查和監察調查,董事長代為履職
- []全球看點:財面兒丨華僑城A:前2月合同銷售金額45.5億元
- []全球滾動:財面兒丨貝殼:2022年凈收入為人民幣607億元
- []每日速訊:財面兒丨貝殼:2022年凈收入為607億元
- []全球微頭條丨漢馬科技:公司嚴格按照信息披露相關規定,履行信息披露義務
- []全球實時:外匯交易提醒:第一共和銀行獲聯手注資,美聯儲下周或加息25個基點,美元仍有上行機會
- []張家港集中推介25宗重點地塊 吸引了50家品牌房企參與
- []世界熱議:龍利得:公司在立足主業的同時聚焦市場需求,發揮自身優勢的同時保持關注各種投資機會
- []怡達股份:我公司與彤程新材巳建立了業務合作關系
- []資訊推薦:蘇州終于有機場了?網傳蘇南碩放機場更名為“無錫蘇州機場”
- []世界通訊!韻達股份:業務量和經營業績同比小幅下降,2022年年預盈13.08億元15.03億元
- []當前快報:廖創興企業2022年收益7.15億港元 股東應占溢利同比下降79.8%
- []即時看!龐溟等:多因素助力2023年商業、寫字樓市場復蘇
- []晃晃館_對于晃晃館簡單介紹
- []頭條焦點:炫舞四個字的名字女生霸氣_炫舞四字名字大全
- []2月份房地產市場更加活躍 住房需求進一步釋放
- []世界熱消息:中指研究院發布《2023中國房地產百強企業研究報告》:百強企業市場份額有所下降
- []全球頭條:富安公司累計減持中國寶安2712.95萬股 占后者總股本1.05%
- []最新快訊!新易盛:3月15日公司高管高光榮減持公司股份合計120萬股
- []佳緣科技:3月15日公司高管朱偉民、朱偉華減持公司股份合計3.73萬股
- []康泰醫學:3月15日公司高管楊志山減持公司股份合計2萬股
- []觀天下!宏川智慧:3月15日公司高管黃韻濤、甘毅、李小力減持公司股份合計34.93萬股
- []商務部等17部門:穩步有序研究推動邊(跨)境經濟合作區新設工作
- []全球聚焦:天健集團完成發行11億超短期融資券 利率為2.88%
- []華發物業服務料2022年擁有人應占溢利同比增長不低于15%
- []環球快資訊:安泰科技: 電子封裝材料主是公司難熔鎢鉬產業的重要板塊,與國際、國內重點客戶都有合作
- []聯贏激光:3月14日公司高管謝強、盧國杰、周航、李毅、秦磊減持公司股份合計11.4萬股
- []寧水集團:3月15日公司高管張世豪、王開拓減持公司股份合計67萬股
- []世界熱消息:上海今年首批供地19宗:涉及11個區,總起始價483.4億元
- []環球快資訊丨IPO估值 | 派瑞特氣:主力產品繼續擴產,或將面臨更激烈的競爭
- []素菜1斤65元 拿渡麻辣香鍋因價格引發熱議
- []當前視點!西部牧業:公司下屬天山云牧乳業積極拓展疆外市場,開發經銷商,該合同系乳制品經銷合同
- []【天天時快訊】復星國際:附屬公司Fidelidade2022年度凈利潤約2.67億歐元
- []云南城投控股股東康旅集團所持約3.2億股解除司法凍結
- []焦點短訊!新元科技:公司將按照相關信息披露規定在定期報告中披露重大合同進展情況,請關注公司定期報告
- []全球今熱點:長江實業:吳佳慶將退任公司執行董事
- []三湘印象實控人減持1204.37萬股 計劃再減持最多2408.74萬股
- []財面兒丨長實集團2022年股東應占溢利216.83億港元 同比增長2.08%
- []時訊:證監會批復同意深振業發行15億公司債
- []動態:貝殼2022年凈虧損13.97億 第四季度凈利潤3.72億
- []當前快訊:迅雷發布2022年Q4及全年財報:全年總營收為3.426億美元同比增長43.0% 四季度營收9,700萬美元同比增長36.3%
- []焦點關注:北方華創:公司沒有開發ChatGPT計劃
- []看熱訊:亞太科技:亞太可轉債配售代碼“082540”,配售簡稱為“亞科配債”
- []今亮點!快訊丨格力集團投資成立房地產新公司珠海格新 注冊資本2.1億元
- []世界熱點!快訊丨珠江股份:時任監事盧梅英因短線交易獲上交所通報批評
- []天天看熱訊:光伏組件價格漸穩 需求有望拉動
- []注冊資本1億!晶科能源于安徽滁州投資新設光伏材料公司
- []全球最新:HJT大逆襲!光伏新勢力走向全球
- []世界觀速訊丨歐盟出臺新戰略,儲能成支持歐盟能源安全和脫碳的關鍵點!
- []廈門:物業開放小區設備房 帶業主看“隱秘的角落”
- []宅男財經|獨家連線張大偉:2023年房價是升是降?
- []天天速遞!拉芳家化:目前公司未制訂“十四五規劃”,關于公司的“發展戰略”詳情查閱公司年報及半年度報告的相關內容
- []全球新資訊:孕中期營養食譜100例_孕期營養食譜
- []環球快訊:招商局置地毛利率連續五年下降 員工年平均薪酬超45萬元
- []【世界新視野】諸葛找房王小嬙:關于2023年1-2月份全國房地產開發投資和銷售情況快評
- []環球快播:諸葛找房陳霄:關于杭州擬進一步放寬落戶政策的快評
- []今日播報!雙星新材:目前下游客戶暫未反饋相關問題,公司的復合銅箔產品的各項指標不斷完善
- []當前播報:浙江美大:截止到2023年3月10日,公司的股東人數為83,083戶
- []花“漾”春日,肌膚先知——寧波阪急春日化妝品節進行中
- []黑芝麻:公司不從事動力電池的生產經營,擬投資的新能源項目為儲能電池項目
- []農行跨行轉賬手續費
- []當前關注:徐州出臺房地產市場新舉措 放寬公積金和商業貸款組合貸政策
- []全球焦點!青島國信發展60億元公募債券項目更新至“已反饋”
- []天天頭條:現場丨商界評論鄭翔洲:成都15年之內或成為全球人口最多城市
- []今日主力搶籌的50只個股
- []環球焦點!四方科技:公司沒有貨款存放在海外銀行
- []微動態丨云南城建集團50億元私募債券項目更新至“已反饋”
- []南京牛首山文旅集團20.94億元私募債券項目更新至“已受理”
- []本川智能:公司目前在手訂單充足,產能利用率較高,并積極布局新能源汽車、光伏、儲能等新興領域
- []天天熱門:晴天霹靂你絕情的放手是什么歌?是誰唱的?
- []環球頭條:中交地產:我司目前主營業務仍為房地產開發
- []世界今熱點:主角主修土系魔法的小說有哪些?分享幾部主角主修土系魔法的小說
- []世界頭條:宏和科技:5,040萬米高端電子布項目按計劃進行中,Q2季實現滿產
- []譚嗣同的事跡有哪些?譚嗣同個人資料介紹?
- []每日看點!小時候看的動畫片有哪些?推薦幾部小時候看的動畫片
- []環球時訊:圓拱形的門洞怎么砌磚?圓拱形的門洞砌磚步驟?
- []環球聚焦:NBA夢之隊的成員有哪些?NBA夢之隊成員資料介紹?
- []貝殼:“一體兩翼”品質升級,打造美好新居住
- []天真派武林外傳的演員有哪些?天真派武林外傳的演員介紹
- []【速看料】如何校對準確時間?校對準確時間的步驟介紹?
- []最資訊丨2023五大銀行存款利率表
- []蘇打水和蘇打水飲料有什么區別?蘇打水和蘇打水飲料的區別介紹?
- []當前滾動:安排是什么梗?安排是怎么來的?
- []最新:制作羊肉biryani的方法
- []御湖蘭園【林峯】領潮而來!主動迭新,生活何止煥新
- B站注冊資本增幅400%至5億 目前由陳睿全資持股
- 光源資本出任獨家財務顧問 沐曦集成電路10億元A輪融資宣告完成
- 巨輪智能2021年上半年營收11.24億元 期內研發費用投入增長19.05%
- 紅棗期貨尾盤拉升大漲近6% 目前紅棗市場總庫存約30萬噸
- 嘉銀金科發布2021年Q2財報 期內凈利潤達1.27億元同比增長208%
- 成都銀行2021上半年凈利33.89億元 期內實現營收同比增長17.27億元
- 汽車之家發布2021年第二季度業績 期內新能源汽車品牌收入增長238%
- 中信銀行上半年實現凈利潤290.31億元 期末不良貸款余額706.82億元
- 光伏概念掀起漲停潮交易價格創新高 全天成交額達1.29億元
- 上半年生物藥大增45% 關鍵財務指標好轉營收賬款持續下降
- 小商品城6億元中期票據將于3月23日付息 利率3.8%
- 世界熱消息:3月16日麥趣爾漲停分析:乳業(奶粉),休閑食品,大農業概念熱股
- 全球今亮點!70城房價指數結束“17連跌”:各線城市新房普漲,湛江和上海分別領漲新房和二手房
- 3月16日國藥一致漲停分析:醫藥商業,醫藥,互聯網醫療概念熱股
- 3月16日播恩集團漲停分析:飼料概念熱股
- 觀天下!香港證監會:密切關注瑞信相關情況
- 世界看點:建業地產2023年到期美元債午后集體走低
- 興蓉環境:對于公司項目投運情況,公司會按規定履行信息披露義務,請關注公司相關公告
- 美達股份:公司嚴格按照監管部門的相關規定和指導意見進行年報披露,不存在無故延期的問題
- 云南旅游并購“后遺癥”延綿多年,一個月內兩收限制消費令
- 中交一公局50億元可續期公司債券已獲受理
- 新湖中寶30億元公司債券已獲受理
- 【新要聞】奧普光電:公司子公司禹衡光學沒有生產光刻機相關的光柵尺
- 天天快看:建發股份150億元可續期公司債券已獲受理
- 資訊:美達股份:公司目前擁有抗菌錦綸6功能性纖維的生產技術和生產能力,對外提供的主要是以纖維材料為主
- 環球信息:德賽西威:公司營收相關情況可留意披露的定期報告內容
- 華僑城A:截至2023年3月10日,公司股東總戶數為115,708戶
- 環球快看:現貨黃金交易策略:歐銀決議來襲,多頭士氣強盛
- 利德治療儀堅守初心 強勁發展為國民健康注力
- 2022年的越秀地產:多數房企想活成的樣子
- 中國電建300億元公司債券已獲受理
- 國電投儲能設備集采開標,晶科能源中標130MWh!
- 【世界獨家】越秀地產(00123)午后升幅擴至4.15% 交銀指其去年業績符預期
- 新湖中寶30億元小公募項目狀態更新為"已受理"
- 每日聚焦:綠城房產16.5億元公司債將付息 利率4.07%
- 江蘇80個項目入選文旅重點項目名錄 蘇州數量位居全省第一
- 天天新資訊:多家航司關鍵指標大幅好轉!民航業反轉在即?
- 315箭牌家居:對美好生活的向往,聲聲都有回響
- 全球最資訊丨知識城集團12億元中票將付息 利率3.97%
- 青島即墨旅投6億元中票完成發行 利率4.5%
- 【快播報】ST花王及實控人擬被處罰 股民、債民均可訴訟索賠
- 箭牌家居亮相ISH展,深度鏈接一帶一路可持續發展
- 你刷到過這片綠色嗎?
- 世界觀天下!國家統計局:一二三線城市商品住宅銷售價格環比總體上漲
- 每日快看:Yalla(YALA.US)發布2022財報,從三個方面看其高質量發展底色
- 環球觀天下!2月一線城市新建商品住宅銷售價格同比上漲1.7%
- 午間主力搶籌的50只個股
- 太美醫療ipo審核被否:商業模式是否穩定、盈利預測是否可實現被質疑
- 成都恒大等樓盤3月16日繼續火爆報名 全市住建交易相關系統異常
- 天天熱文:內蒙古推出兩項專項政策“引客入蒙” 最高獎勵10萬元
- 環球快報:58安居客張波:市場觸底復蘇態勢非常明顯 部分城市明確進入“小陽春”
- 皇氏集團:股東人數情況敬請查閱公司定期報告
- 天天視點!炒股入門應該怎么開戶
- 大額存單利率2023最新利率表
- 世界視訊!工商銀行信用卡怎么辦
- 全球微動態丨龍湖天著搶跑小陽春!新品劇透來襲!240萬起入住主城!
- 中環裝備:公司公眾號為“中節能環保裝備股份有限公司”
- 全球簡訊:量化投資正當時,博時ESG量化選股混合3月16日上線發售
- 全球今頭條!佳源服務早盤漲超7% 現總市值2.57億港元
- 里昂指積極擴充土儲或有助越秀地產維持其業務的長期發展
- 天天觀熱點:興蓉環境:山東東營項目收購工作正在有序推進,后續進展可關注公司相關公告
- 天健集團:公司無法回答與公司無關的事項
- 全球頭條:新能源車使用環境持續優化,充電樁建設繼續提速
- 【全球快播報】2月70城房價出爐!55城新房價格環比上漲
- 全球微頭條丨2022年中國銀行首套房貸利率,有以下三點利率詳情
- 資訊:2022年12月08日全國八角報價分析
- 環球即時:銀行上班時間
- 大學生理財建議
- 用戶故事:慶幸向錢小樂借款 讓我度過資金周轉的難關
- 每日報道:工商銀行信用卡怎么辦理
- 環球熱訊:ipo重啟是什么意思
- 天天視點!網絡視頻會議系統是什么?網絡視頻會議系統有哪些功能?
- 訂單退改難、網紅地虛假宣傳、服務價格虛高……盤點旅游消費那些“坑”
- 好看的穿越到異界的小說有哪些?好看的穿越到異界的小說大全?
- 焦點熱議:哪種手機瀏覽器最好用?推薦幾種好用的手機瀏覽器
- 要聞:統計局:一二三線城市商品住宅銷售價格環比總體上漲
- 焦點觀察:帶著軍火庫去抗日的小說有哪些?推薦幾部帶著軍火庫去抗日的小說
- 環球今日訊!中國新歌聲第二季總冠軍是誰?還有哪些榮譽?
- 全球最新:女明星們的絕美街拍系穿搭有哪些?女明星街拍穿搭圖片大全?
- 【熱聞】國家應該怎樣擴大就業?擴大就業的策略有哪些?
- 視焦點訊!蘇州車管所地址在哪里?主要辦理的業務項目有哪些?
- 環球今日報丨正常餐桌尺寸是多少?購買餐桌參考有哪些?
- 環球快看:南京高科:成功發行2.5億元超短期融資券
- 關注:黃油是什么油做的?黃油有什么營養?
- 3月16日匯市觀潮:歐元、英鎊和日元技術分析
- 【環球快播報】黃金市場分析:若意外失守55日均線,則削弱后市看漲信號
- 熱點聚焦:中信建投期貨3月16日早間交易策略
- 速看:2月55城新建商品住宅售價環比上漲,業內:市場觸底復蘇的態勢已表現非常明顯
- 環球熱點評!萬通發展:擬對金通港提供財務資助1285.904萬元實施展期
- 世界訊息:三六零:公司計劃近期推出一系列類GPT的應用產品
- 天天快看點丨黃金交易提醒:瑞士信貸推升避險,央行加息預期降溫,多頭或繼續高歌猛進
- 統計局:一線城市商品住宅銷售價格同比上漲、二三線城市降幅收窄
- 每日速看!好想你:公司在巴州地區有紅棗種植基地
- 寶新能源:公司一直關注數字化辦公等信息技術對經營管理的推動作用,公司會根據實際需要采用合適的技術工具
- 房企銷售回暖 關注基本面兌現持續性
- 熱點!益生股份:公司商品代白羽肉雞苗的訂單已排到6月份
- 觀速訊丨銀行類型有哪些
- 社保與QFII最新持倉出爐 長線資金投資軌跡浮現
- 世界今頭條!dr股票是什么意思啊,股票除權除息
- 天天快播:高空項目安全帶“不安全”,景區游客墜橋事故連發
- 【播資訊】微信余額寶在哪里,余額寶不是微信的
- 量子通信三大龍頭股 量子通信的三大龍頭股
- 全球化的利弊
- 環球快報:酒店業“再出發”,先別急著“漲房價”
- 每日精選:辣椒能施鉀肥嗎?
- 百事通!38萬人圍觀,91.05億成交!泛海控股回應“民生證券股權拍賣”:有助于化解公司當前債務問題
- 3·15商場消費調研案例| 北京通州萬達廣場:從零售業態轉變為體驗業態,“對全年經營業績充滿信心”
- 國家統計局最新的房地產數據,說明了什么問題?