关于JAVA多线程之间的数据共享

在网上查了资料,说类的实例变量是多线程共享的。经过实验为什么不是呢?请看下面的代码
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并没有在多个线程之间共享。这是为什么呢?

你可能感兴趣的:(java,jvm,多线程,thread,工作)