例子
原因 因为使用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的值是他们三个一起改变的,所以实现了资源共享,比如在卖票系统中国可以使用