小弟正在学 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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.