为什么这种竞争条件的输出有些一致?

当我运行以下代码时,最终输出始终为正,如果我切换“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();
        }
    }
}

以上是为什么这种竞争条件的输出有些一致?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>