例子
- 原因
因为使用Runnable只实例化一个对象,然后用Thread来封装这个对象,操作的是这个对象的属性,所以可以一起修改这个属性 - 代码
public class Test {
public static void main(String[] args) {
Demo d = new Demo();
Thread dd = new Thread(d,"DD1");
Thread dd2 = new Thread(d,"DD2");
Thread dd3 = new Thread(d,"DD3");
dd.start();
dd3.start();
dd2.start();
}
}
public class Demo implements Runnable{
private int a = 30;
@Override
public void run() {
for(int i = 10;i>1;i--){
System.out.println("此时i为"+i+"此时a为"+(a++));
}
}
}
- 运行的部分结果为
时i为10此时a为30
此时i为9此时a为31
此时i为8此时a为32
此时i为7此时a为33
此时i为6此时a为34
此时i为5此时a为35
此时i为4此时a为36
此时i为3此时a为37
此时i为2此时a为39
此时i为10此时a为40
此时i为9此时a为41
此时i为8此时a为42
此时i为7此时a为43
此时i为6此时a为44
此时i为5此时a为45
此时i为4此时a为46
此时i为10此时a为38
此时i为9此时a为48
此时i为3此时a为47
此时i为8此时a为49
此时i为2此时a为50
此时i为7此时a为51
此时i为6此时a为52
此时i为5此时a为53
此时i为4此时a为54
此时i为3此时a为55
此时i为2此时a为56
a的值是他们三个一起改变的,所以实现了资源共享,比如在卖票系统中国可以使用