为什么这种竞争条件的输出有些一致?
当我运行以下代码时,最终输出始终为正,如果我切换“x++”和“x--”的顺序,则最终输出始终为负。这个竞争条件的哪些部分被跳过是否有某种顺序?非常感谢任何帮助理解!
public class DataRace {
private static class MyThreadCode implements Runnable {
private static int x = 0; // NOTE THAT X IS STATIC!!!
@Override
public void run() {
for (int i = 0; i < 10000000; i++) {
x++;
x--;
}
System.out.println(x + " " + Thread.currentThread().getName());
}
}
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
Thread t = new Thread(new MyThreadCode());
t.start();
}
}
}