如果程序運(yùn)行順序的改變會(huì)影響最終結(jié)果,這就是一個(gè)競態(tài)條件(race condition)。
例如:兩個(gè)線程執(zhí)行下面的方法
class?Counter {?
????protected?long?count =?0;?
????public?void?add(long?value) {?
????????this.count =?this.count + value;?
????}?
}?
線程1:t1.add(2);
線程2:t2.add(3);
如果按順序執(zhí)行,線程2執(zhí)行之后count變量應(yīng)該為5,但是如果兩個(gè)線程同時(shí)進(jìn)入倚聚,就會(huì)分別加上2,3 。最后寫入的值為最后寫入內(nèi)存的值扔罪。
個(gè)人公號(hào):【排骨肉段】秉沼,可以關(guān)注一下。