[code="java"]
public static void main(String[] args) {
Integer count = new Integer(0);
new SendThread(count).start();
new SendThread(count).start();
new SendThread(count).start();
new SendThread(count).start();
new SendThread(count).start();
}
[/code]
[code="java"]
public class SendThread extends Thread {
public Integer count = 0;
public SendThread(Integer count) {
this.count = count;
}
@Override
public void run() {
while (true) {
synchronized(count){
count++;
System.out.println(getName()+ ",number:"+count);
}
try {
Thread.sleep(10);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
[/code]
运行结果如下:
Thread-1,number:1
Thread-3,number:1
Thread-0,number:1
Thread-2,number:1
Thread-4,number:1
Thread-0,number:2
Thread-1,number:2
Thread-2,number:2
Thread-3,number:2
Thread-4,number:2
Thread-0,number:3
Thread-4,number:3
Thread-2,number:3
Thread-3,number:3
Thread-1,number:3
Integer不是对象吗?那这5个线程,不是都是同一个对象上进行累加吗?为什么每个线程打印出来的值都是从1开始呢?
这到底是为什么呢为什么呢?