亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

細說Java多線程之內存可見性

難度中級
時長57分
學習人數
綜合評分9.63
181人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.4 邏輯清晰

最贊回答 / demo_h
恩 準確說應該是讓線程處于阻塞狀態

最贊回答 / 鬼羽子
32bit數據的讀寫是一個原子操作,對64bit數據加volatile僅僅只是保證數據的讀寫具有不可重入性以及可見性——這樣就夠了。第一個32bit讀完之后,才允許讀第二個32bit,且必須從主線程內存中刷新,這樣可以保證數據的有效性。

已采納回答 / passionfoure
這里面有兩個VOLATILE變量,它包含了一個不變式就是LOW<UP(?if (value > upper) 和???if (value < low)?)public class A { ? ?private volatile?int low=0;? ?private volatile?int?up=100;? ?public int getLow() { return low; } ? ?public int getUp() { return up; } ? ?public void ...

最贊回答 / meetyu
volatile本身不保證獲取和設置操作的原子性,僅僅保持修改的可見性。但是java的內存模型保證聲明為volatile的long和double變量的get和set操作是原子的

已采納回答 / meetyu
volatile本身不保證獲取和設置操作的原子性,僅僅保持修改的可見性。但是java的內存模型保證聲明為volatile的long和double變量的get和set操作是原子的

已采納回答 / 追風少年
一般是考慮安全性,對數據提供保護,可以通過set方法賦值,再通過get方法取值,這就是java封裝的思想

最新回答 / MrToms
volatile 變量可以被看作是一種 “程度較輕的 synchronized”;與 synchronized 塊相比,volatile 變量所需的編碼較少,并且運行時開銷也較少,但是它所能實現的功能也僅是 synchronized 的一部分。

已采納回答 / MartonZhang
?出現0是因為讀線程先得到了執行,讀線程執行完,寫線程才執行,這個我里面也有講到,你稍微注意下,在“synchronized實現可見性(下)”的第03:30之后!另外,慕課網這點估計剪切的估計太快了,有點不太容易注意到,可以在寫線程和讀線程之間加個休眠操作,讓寫線程執行完,讀線程在執行,也可以使用wait和notify來控制線程執行的順序!
課程須知
學習本課程前,你需要熟練掌握Java的基礎語法,熟悉Java多線程的基礎知識,以及synchronized實現線程同步的方法。
老師告訴你能學到什么?
1、內存可見性 2、指令重排序 3、as-if-serial語義 4、synchronized實現可見性 5、volatile實現可見性

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消