小弟正在学 java jmm 知识,做了个实验代码和执行结果如下,启动了 2 个线程来看共享的 count 变量是否被线程共享,按照 jmm 理论 线程应该会加载公共变量到自己的线程,互相不影响,咋执行结果线程 2 赋值后,线程 1 就不++了,往指点,谢谢了
public class Test {
private static Long count = 0L;
public static void main(String[] args) throws InterruptedException {
new Thread(() -> {
System.out.println("Thread1 start");
while (count < 10000L) {
count++;
System.out.println("Thread1 count:" + count);
}
System.out.println("Thread1 end");
}).start();
new Thread(() -> {
System.out.println("Thread2 start");
count = 10000L;
System.out.println("Thread2 count:" + count);
System.out.println("Thread2 end");
}).start();
}
}
执行结果
Thread1 start
Thread1 count:1
Thread2 start
Thread1 count:2
Thread1 end
Thread2 count:10000
Thread2 end