使用Thread类创建两个模拟猫和狗的线程,猫和狗共享房屋中的一桶水,即房屋是线程的目标对象,房屋中的一桶水被猫和狗共享。猫和狗轮流喝水(狗喝的多,猫喝的少),当水被喝尽时,猫和狗进入死亡状态。猫或狗在轮流喝水的过程中,主动休息片刻(让Thread类调用sleep(int n)进入中断状态),而不是等到被强制中断喝水.
代码实现:(测试类有点看不懂)
House类:
public class House implements Runnable { int waterAmount; //用int变量模拟水量 public void setWater(int w) { waterAmount = w; } public void run() { while(true) { 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){} if(waterAmount<=0) { return; } } } }
Test类:
public class Test{ public static void main(String args[ ]) { House house = new House(); house.setWater(10); Thread dog,cat; dog=new Thread(house); cat=new Thread(house); //cat和dog的目标对象相同 dog.setName("狗"); cat.setName("猫"); dog.start(); cat.start(); } }