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

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

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

難度中級
時長57分
學習人數
綜合評分9.63
181人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.4 邏輯清晰
講的很好 能聽懂
講的很牛X 兄弟
很有收獲的一堂課,老實講得很棒!
那些說加synchronized關鍵字也出現0的,是沒仔細聽老師講吧!人家也說了這種情況,這種情況是線程的執行順序引起的(這種情況下是符合可見性的),不是線程的交叉執行引起的!
其實我們都在關注0和6 的結果,看到synchronized的時候我們的第一反應都是關注加入synchronized之后結果為6才對,但是其實這里本身并不滿足同步,結果0和6應該都是對的。(如果不sleep的時候)這一章的標題也是synchronized實現可見性,換句話說應該是不出現3的結果才對。這是我的理解
打卡,學習過了,謝謝
真的講的非常棒,原先只知道怎么用,現在真的理解了 運行原理
感謝老師的講解。我想提一點建議,我覺得這門課理論偏多,代碼實踐過少了。我理解起來沒那么深入,更多的是停留在理論階段。希望能多一點代碼的實踐分析。
基礎是更需要深入理解與記憶的,老師的講解更是讓我加深鞏固了知識點,受益頗多!
老師講的是真好,給老師瘋狂打call,特別是主內存 跟 工作內存的圖,看完之后對synchronized的機制理解 加深了
經驗證 加了 synchronized 之后還是出現0。再仔細看了下代碼,read()方法里的輸出是在if 外面,只要是讀方法先執行,ready = false;然后執行輸出,reult = 0; 都是初始值。哈哈,例子沒找好。
老師可以發下ppt嗎
個人理解:不加volatile的普通變量不具有這個效果,比如線程對工作變量修改完之后,不會百分百對主內存也修改,有可能改完自己工作變量后休眠了,一直不去對主內存中的變量進行修改。但是線程對volatile變量會綁定對主內存變量也修改的操作,也可以說對volatile變量的修改 有一個 “對自己工作區變量修改并且綁定了一個對主內存變量修改”的原子性的操作。
個人一個比較淺顯的理解就是:
synchronized就是互斥鎖,實現底層就是總線鎖,當一個線程獲得該鎖時,其他線程就會進入阻塞狀態,從而不能進行操作。
而volatile則不同,它有點像緩存鎖,但是又不像鎖。volatile變量在執行寫操作時,會加入store的屏障指令,我的理解是這時其他線程不能能對該共享變量做出任何操作,但是可以操作其他共享變量。這時volatile的開銷就比synchronized小。
講的不錯,受教了!
課程須知
學習本課程前,你需要熟練掌握Java的基礎語法,熟悉Java多線程的基礎知識,以及synchronized實現線程同步的方法。
老師告訴你能學到什么?
1、內存可見性 2、指令重排序 3、as-if-serial語義 4、synchronized實現可見性 5、volatile實現可見性

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消