個(gè)人之見(jiàn),請(qǐng)眾神指教
我在EnergySystem類(lèi)中的將得到的能量值增加到目標(biāo)能量盒中語(yǔ)句修改了一下:
System.out.println("======="?+?(energyBoxes[to]?+=?amount)?+?"=======");
用來(lái)驗(yàn)證當(dāng)前線(xiàn)程是否把前面的從源能量盒中得到的能量真的加到了目標(biāo)能量盒中;
部分輸出如下:
由上面的結(jié)果可以看出,在大部分線(xiàn)程的執(zhí)行過(guò)程中,并沒(méi)有執(zhí)行到將得到的能量值加到目標(biāo)能量盒中時(shí)資源就被其他線(xiàn)程搶占了,然而下下一條循環(huán)中,有可能將得到的能量值加到目標(biāo)能量盒中,并執(zhí)行到計(jì)算當(dāng)前的總能量,因此,經(jīng)過(guò)大量的循環(huán),總能量就減少,也就是講師所說(shuō)的共享的數(shù)據(jù)被破壞。
2017-04-11
能否發(fā)一下完整代碼,我按照你的描述測(cè)試完,總能量一直是不變的,轉(zhuǎn)移的能量也是在同步代碼當(dāng)中進(jìn)行,也真的加到了目標(biāo)能量盒當(dāng)中。不知道你的跳躍輸出是由于什么,睡眠時(shí)間的問(wèn)題還是代碼的問(wèn)題?