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