已經(jīng)學(xué)過java虛擬機(jī),視頻講的不錯(cuò),但是再深入點(diǎn)就好了。其實(shí)線程的工作內(nèi)存和方法的工作內(nèi)存都是在邏輯上的內(nèi)存,實(shí)際并不存在的,而且線程不也是方法的調(diào)用嗎?只不過是在同時(shí)進(jìn)行罷了。
2016-11-01
最贊回答 / 洋__
呵呵,提問者沒搞懂,大家不要被這個(gè)人帶偏了,他才在誤人子弟!估計(jì)提問者是想說內(nèi)存可見了,怎么還會執(zhí)行結(jié)果不一致呢?誰說過保證了內(nèi)存可見性就保證執(zhí)行結(jié)果是一致的??別人是內(nèi)部線程類,視頻里read()操作和write()操作加了synchronized是原子性的,但是又不保證read()和write()哪個(gè)先執(zhí)行,所以會出現(xiàn)2個(gè)結(jié)果,如果是先read()執(zhí)行,那么result就是0,如果write()先執(zhí)行,那么result就是6。最后老師通過延時(shí)保證write()先執(zhí)行,結(jié)果就是只有6。建議多學(xué)習(xí),少抱怨...
最贊回答 / smile_evil
你讓write線程休眠一會。就會出現(xiàn)其他狀況。因?yàn)榇a短執(zhí)行的太快,線程沒有進(jìn)行切換就已經(jīng)執(zhí)行完畢了,所以結(jié)果只有6.
2016-10-04