關于sleep會讓效果更明顯的想法
會不會是因為你的線程在sleep,然后在主線程的while循環(huán)中的判斷條件不滿足了,就是因為有些線程還在sleep,判定的就不是處于active狀態(tài),就進行了getNumber的操作,所以才會有這么明顯的體現(xiàn)。
會不會是因為你的線程在sleep,然后在主線程的while循環(huán)中的判斷條件不滿足了,就是因為有些線程還在sleep,判定的就不是處于active狀態(tài),就進行了getNumber的操作,所以才會有這么明顯的體現(xiàn)。
2017-07-07
舉報
2017-07-08
while循環(huán)內判斷的是所有的子線程是否都運行完了,如果是的話,繼續(xù)下面的打印操作。
如果不用synchronized或不加鎖,程序運行時,有時候getNumber獲得的值小于500,是因為volatile定義的變量不能保證原子性,所以會出現(xiàn)兩個線程同時寫number時,number只增加了1,沒有增加2,所以影響到number變量最終的值不是500,而是499或498了。