标签:
附上代码段:
public class DemoThread3 {
/**
* @author 牧羊的伯格女皇
* @param args
* 2015-10-15
* 模拟猫和狗的线程,共享房屋中的一桶水。即房屋是线程的目标对象。
* 当水被喝完后 猫和狗 进入死亡状态
*/
public static void main(String[] args) {
House house = new House();
house.setWaterAmount( 10 );
Thread dog; //用Thread 声明线程
Thread cat;
dog = new Thread( house ); // dog 和 cat 的目标对象相同 都是house
cat = new Thread( house ); //
dog.setName("狗"); // 改变线程名称,使之与参数name相同
cat.setName("猫");
dog.start(); // 启动线程
cat.start();
}
}
public class House implements Runnable {
private int waterAmount;
public void setWaterAmount(int waterAmount) {
this.waterAmount = waterAmount;
}
@Override
public void run() {
while(true){
// currentThread() : 返回对当前正在执行的线程对象的引用。
// getName() 返回该线程的名称。
String name = Thread.currentThread().getName();
if(name.equals("狗")){
System.out.println( name + " 喝水");
waterAmount = waterAmount - 2;
}else if( name.equals("猫")){
System.out.println( name +" 喝水");
waterAmount = waterAmount -1;
}
System.out.println(" 还剩余 : " + waterAmount );
try {
Thread.sleep(2000); // 间隔时间 进入中断状态
} catch (InterruptedException e) {
//当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常。
e.printStackTrace();
}
if( waterAmount <=0 ){
return;
}
}
}
}
标签:
原文地址:http://my.oschina.net/u/2405367/blog/517835