課程
/后端開發
/Java
/細說Java多線程之內存可見性
synchronized講的有問題呀!這樣做并不能實現可見性呀!不要誤人子弟呀
2016-11-01
源自:細說Java多線程之內存可見性 3-4
正在回答
呵呵,提問者沒搞懂,大家不要被這個人帶偏了,他才在誤人子弟!估計提問者是想說內存可見了,怎么還會執行結果不一致呢?誰說過保證了內存可見性就保證執行結果是一致的??別人是內部線程類,視頻里read()操作和write()操作加了synchronized是原子性的,但是又不保證read()和write()哪個先執行,所以會出現2個結果,如果是先read()執行,那么result就是0,如果write()先執行,那么result就是6。最后老師通過延時保證write()先執行,結果就是只有6。建議多學習,少抱怨,只是能力不足,不要說老師不行哈。
慕的地3745111
似乎沒搞懂不要亂說
那么你說是哪里有問題呢??
????????synchronized不僅可以解決一個線程看到對象處于不一致的狀態,還可以保證進入同步方法或者同步代碼塊中的每個線程都看到由同一個鎖保護之前所有的修改效果。這就是synchronized的互斥性和可見性。
????????老師講的也說的很清楚啊:
線程執行互斥代碼的過程:
獲得互斥鎖
清空工作內存
從主內存拷貝變量的最新副本到線程工作內存
執行代碼
將更改后的最新的共享變量的值刷新到主內存
釋放互斥鎖
洋__
舉報
用兩種方式實現內存可見性,代領大家深層次學習Java中的內存
1 回答synchronized(this) 中this代表是什么呀?
3 回答讀寫方法上面加了synchronized關鍵字,不能保證原子性
1 回答synchronized例子提問
1 回答關于可見性
2 回答synchronized實現什么鎖?沒聽清。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-10-07
呵呵,提問者沒搞懂,大家不要被這個人帶偏了,他才在誤人子弟!估計提問者是想說內存可見了,怎么還會執行結果不一致呢?誰說過保證了內存可見性就保證執行結果是一致的??別人是內部線程類,視頻里read()操作和write()操作加了synchronized是原子性的,但是又不保證read()和write()哪個先執行,所以會出現2個結果,如果是先read()執行,那么result就是0,如果write()先執行,那么result就是6。最后老師通過延時保證write()先執行,結果就是只有6。建議多學習,少抱怨,只是能力不足,不要說老師不行哈。
2017-06-29
似乎沒搞懂不要亂說
2016-11-16
那么你說是哪里有問題呢??
2016-11-07
????????synchronized不僅可以解決一個線程看到對象處于不一致的狀態,還可以保證進入同步方法或者同步代碼塊中的每個線程都看到由同一個鎖保護之前所有的修改效果。這就是synchronized的互斥性和可見性。
????????老師講的也說的很清楚啊:
線程執行互斥代碼的過程:
獲得互斥鎖
清空工作內存
從主內存拷貝變量的最新副本到線程工作內存
執行代碼
將更改后的最新的共享變量的值刷新到主內存
釋放互斥鎖