【发布时间】:2018-04-07 01:17:18
【问题描述】:
我编写了一个简单的程序来测试 volatile 变量。至于我在 t2 运行时编写的程序,它应该选择 i 的值为 3,并且永远不应该进入 while 循环
但它输出 0 1 2 0 1 2 因为它是不稳定的,它不应该只打印 0,1,2 吗??
public class Test{
public static void main(String []args) throws InterruptedException{
TestVolatile t1 = new TestVolatile();
t1.start();
t1.join();
TestVolatile t2 = new TestVolatile();
t2.start();
}
}
class TestVolatile extends Thread{
volatile int i = 0;
public void run(){
while(i < 3){
System.out.println(i);
i++;
}
}
}
【问题讨论】:
-
说真的:如果你不明白你需要 static 在这里,那么你试图了解 volatile 和线程以及什么不是......就像非常低效。首先学习基础知识。然后是高级的东西。
标签: java jakarta-ee data-structures core