单独的线程可以更改静态变量吗?

Kon*_*tin 7 java static multithreading

浏览网页后,我仍然对以下线程行为感到困惑.我知道静态变量是在同一个类加载器中共享的,但是在这个提取中肯定没有:

public class parallelCounter {
    public static final int N = 100000000;
    public static int j = 0;
    public static void inc() {
        for (int i = 0; i < N; i++) {
            j++;
        }
        System.out.println(j); // 10000000
    }
}

class parallelCounterDemo {
    public static void main(String[] args) {
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                parallelCounter.inc();
            }
        });
        t1.start();
        System.out.println(parallelCounter.j); // 0 Why?
    }
}
Run Code Online (Sandbox Code Playgroud)

use*_*900 0

t1 是一个新线程,它异步启动,并且您的代码继续而不调用 inc() 函数,因此 j 编号仍然是 0