解決讀取 半個(gè)變量的情況應(yīng)該是加 synchronized關(guān)鍵字,volatile不不保證原子性的。。
2015-08-30
volatile和synchronized 的最大區(qū)別就是 前者不能保證變量或者代碼操作的原子性,而后者可以。。。原子性:要么操作完全,要么不操作。即,要么操作為1要么為0。。而volatile可能值執(zhí)行某項(xiàng)操作的一部分,比如 操作了0.6,這樣子,算什么事兒嘛,對(duì)吧。。所以,這個(gè)就是區(qū)別。。。
個(gè)人總結(jié),如有錯(cuò)誤,望批評(píng)指正。發(fā)私信
個(gè)人總結(jié),如有錯(cuò)誤,望批評(píng)指正。發(fā)私信
2015-08-30
因?yàn)榫€程的執(zhí)行本身就是不確定的,加了synchronized關(guān)鍵字只能確?;コ庠L問(wèn)這段代碼以及變量的可見(jiàn)性,即某線程在修改共享變量(通過(guò)自己的工作內(nèi)存來(lái)修改)時(shí),其他的所有線程無(wú)法獲得共享變量的信息。所以synchronized并不能保證程序的執(zhí)行順序。所以即使加了synchronized也可能會(huì)出現(xiàn)0。順序是隨機(jī)的,看jVM內(nèi)存以及CUP的調(diào)度了。
2015-08-30
樓下的話差矣。。多線程執(zhí)行,可以說(shuō)是很“亂”的,和不是按照你代碼寫(xiě)的順序那樣子執(zhí)行的。。一旦所有線程調(diào)用了start()后,那么就會(huì)出現(xiàn)
“不可控”的局面。。。ps:強(qiáng)烈要求慕課提供回復(fù)功能。
“不可控”的局面。。。ps:強(qiáng)烈要求慕課提供回復(fù)功能。
2015-08-30
這是我看到的講線程最透切的視頻,還是從原理上來(lái)講解,讓人學(xué)起來(lái)更來(lái)勁。感恩.....
2015-08-10