为什么下面的程序输出11而不是12 ?. 线程是否使用相同的实例变量?请解释?实例变量和新线程
public class Tester extends Thread {
private int i;
public static void main(String[] args){
Tester t = new Tester();
t.run();
System.out.print(t.i);
t.start();
System.out.print(t.i);
}
public void run(){ i++;}
}
上面的代码编译得很好。我对物体的构造默认为0值。 在关系概念之前发生在线程启动之前执行的所有代码都已完成。 概念是 - 实例变量在多个线程之间共享 - 这里有两个线程正在运行 - 主线程和测试器线程。所以我应该与这两个线程共享? - 如果我是共享的,并且如果发生 - 在启动Tester线程之前维护关系之前,递增的i的值应该对测试器线程可见?
价值我甚至不明白为什么你认为它应该打印11 –
这是一个有趣的问题!它不能打印11或12它甚至不会编译!差点拿到我们 –
我不明白你为什么认为它应该打印除'0'之外的东西? –