为什么下面的程序输出 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++;}
}
上面的代码编译得很好。i 在构造对象时默认为 0 值。在关系概念之前发生在线程启动之前执行的所有代码都已完成。这个概念是 - 实例变量在多个线程之间共享 - 这里有两个线程在运行 - 主线程和测试线程。所以我应该与两个线程共享?- 如果 i 是共享的并且如果在启动 Tester 线程之前保持发生之前的关系,那么递增 i 的值应该对 Tester 线程可见?