其實(shí)我們都在關(guān)注0和6 的結(jié)果,看到synchronized的時(shí)候我們的第一反應(yīng)都是關(guān)注加入synchronized之后結(jié)果為6才對(duì),但是其實(shí)這里本身并不滿足同步,結(jié)果0和6應(yīng)該都是對(duì)的。(如果不sleep的時(shí)候)這一章的標(biāo)題也是synchronized實(shí)現(xiàn)可見性,換句話說應(yīng)該是不出現(xiàn)3的結(jié)果才對(duì)。這是我的理解
2019-03-24
+ 我來回答
回答最高可+2積分
真的講的非常棒,原先只知道怎么用,現(xiàn)在真的理解了 運(yùn)行原理
2019-02-08
感謝老師的講解。我想提一點(diǎn)建議,我覺得這門課理論偏多,代碼實(shí)踐過少了。我理解起來沒那么深入,更多的是停留在理論階段。希望能多一點(diǎn)代碼的實(shí)踐分析。
2019-02-03
最贊回答 / iceWang
一個(gè)或某幾個(gè)操作只能在一個(gè)線程執(zhí)行完之后,另一個(gè)線程才能開始執(zhí)行該操作,也就是說這些操作是不可分割的,線程不能在這些操作上交替執(zhí)行文中的 i++ 包括 3 個(gè)操作讀取 i 的值i 的值 +1?將 i 賦值給 i在這 3 個(gè)操作中可能會(huì)有其他線程開始執(zhí)行,因此不是原子性的
2019-01-20
老師講的是真好,給老師瘋狂打call,特別是主內(nèi)存 跟 工作內(nèi)存的圖,看完之后對(duì)synchronized的機(jī)制理解 加深了
2018-12-02
經(jīng)驗(yàn)證 加了 synchronized 之后還是出現(xiàn)0。再仔細(xì)看了下代碼,read()方法里的輸出是在if 外面,只要是讀方法先執(zhí)行,ready = false;然后執(zhí)行輸出,reult = 0; 都是初始值。哈哈,例子沒找好。
2018-11-20
已采納回答 / 特南克斯
main 線程是會(huì)和? new 出來的線程并行執(zhí)行的,如果沒有那個(gè) while 判斷,下面這行代碼<...code...>就會(huì)在其他線程執(zhí)行完之前就執(zhí)行了。加 while 判斷,就是為了等五百個(gè)線程執(zhí)行完畢
2018-10-14