多個線程讀時骏掀,線程是安全的。
當(dāng)兩個線程競爭同一資源時柱告,如果對資源的訪問順序敏感截驮,就稱存在競態(tài)條件。
我的理解际度,競態(tài)條件就是一種情況葵袭。
代碼示例
假設(shè)有 A、B 兩個線程乖菱,調(diào)用 add 方法分別傳入 1 和 2坡锡,理想條件下結(jié)果應(yīng)該是 3蓬网。
現(xiàn)在出現(xiàn)了不安全的情況,有可能結(jié)果不對鹉勒。
add 方法就是臨界區(qū)
帆锋,count
就是同一資源。
class Counter {
protected long count = 0;
public void add(long value) {
this.count = this.count + value;
}
}
其實這樣一看禽额,說白了锯厢,就是要嚴(yán)格控制線程的執(zhí)行順序,假設(shè)是按A脯倒、B的順序執(zhí)行來講实辑,B依賴于A先執(zhí)行完成,B再執(zhí)行結(jié)果才是正確的藻丢,中間不能出現(xiàn)問題剪撬,否則如果,中間交叉執(zhí)行郁岩,就有可能發(fā)生了競態(tài)條件婿奔。