在网上查了资料,说类的实例变量是多线程共享的。经过实验为什么不是呢?请看下面的代码
package test;
public class ThreadDemo extends Thread{
private int i = 0;
@Override
public void run() {
System.out.println(this +":" + ++i);
}
public static void main(String[] args){
for(int i=0;i<5;i++){
ThreadDemo t = new ThreadDemo();
t.start();
}
}
}
上面的代码我生成了五个线程。每个线程启动的时候,把实例变量+1然后打印,就得到了下面的结果
Thread[Thread-0,5,main]:1
Thread[Thread-1,5,main]:1
Thread[Thread-2,5,main]:1
Thread[Thread-3,5,main]:1
Thread[Thread-4,5,main]:1
从这里看,好像每个线程都独自拥有一个变量i。而变量i并没有在多个线程之间共享。这是为什么呢?