/***看兔子和乌龟的进程**/class  Tortoise extends Thread
{
int sleepTime=0,liveLength=0;
Tortoise(int sleepTime,String name,int liveLength){
this.sleepTime=sleepTime;
this.liveLength=liveLength;
setName(name);
}
public void run(){
while(true){
liveLength--;
System.out.print("跑£");
try{
Thread.sleep(sleepTime);//休眠sleepTime,之后重新新等待CPU资源
}catch(InterruptedException e){
System.out.println("兔子进程中断");
}
if(liveLength<=0){
System.out.println(getName()+"死亡状态");
stop();//终止线程
}
}
}
}
class  Rabbit extends Thread
{
int sleepTime=0,liveLength=0;
Rabbit(int sleepTime,String name,int liveLength){
this.sleepTime=sleepTime;
this.liveLength=liveLength;
setName(name);
}
public void run(){
while(true){
liveLength--;
System.out.print("爬≈");
try{
Thread.sleep(sleepTime);//休眠sleepTime毫秒,之后重新新等待CPU资源
}catch(InterruptedException e){
System.out.println("乌龟进程中断");
}
if(liveLength<=0){
System.out.println(getName()+"死亡状态");
stop();//终止线程
}
}
}
}
public class TortoiseAndRabbit
{
public static void main(String[]args){
Rabbit rabbit=new Rabbit(1000,"兔子",20);
Tortoise tortoise=new Tortoise(500,"乌龟",10);
rabbit.start();
tortoise.start();
}
}
//不明白为什么乌龟线程已经死亡了,还可以输出乌龟跑。????

解决方案 »

  1.   

    呵呵,好像是楼主的打印信息错了
    Tortoise "跑£" "兔子进程中断"另外,stop方法现在过时了。针对楼主的这两个线程,把stop换成break就可以了吧,run方法结束了,进程也就自动结束了
      

  2.   

    不是吧?我这个似乎只把提示更换成正常提示,没改其他呀,你比较下:class Tortoise extends Thread {
    int sleepTime=0,liveLength=0;
    Tortoise(int sleepTime,String name,int liveLength){
    this.sleepTime=sleepTime;
    this.liveLength=liveLength;
    setName(name);
    }
    public void run(){
    while(true){
    liveLength--;
    System.out.print("爬£");  //个人觉得乌龟爬更合适
    try{
    Thread.sleep(sleepTime);//休眠sleepTime,之后重新新等待CPU资源
    }catch(InterruptedException e){
    System.out.println("乌龟线程中断");  //这里你写错了
    }
    if(liveLength <=0){
    System.out.println(getName()+"死亡状态");
    //stop();//终止线程
    break;
    }
    }
    }
    }class Rabbit extends Thread {
    int sleepTime=0,liveLength=0;
    Rabbit(int sleepTime,String name,int liveLength){
    this.sleepTime=sleepTime;
    this.liveLength=liveLength;
    setName(name);
    }
    public void run(){
    while(true){
    liveLength--;
    System.out.print("跑≈");  //兔子还是用跑吧
    try{
    Thread.sleep(sleepTime);//休眠sleepTime毫秒,之后重新新等待CPU资源
    }catch(InterruptedException   e){
    System.out.println("兔子线程中断");  //这里错了
    }
    if(liveLength <=0){
    System.out.println(getName()+"死亡状态");
    //stop();//终止线程
    break;

    }


    public class TortoiseAndRabbit 
    {
    public   static   void   main(String[]args){
    Rabbit rabbit=new Rabbit(1000,"兔子",20);
    Tortoise tortoise=new Tortoise(500,"乌龟",10);
    rabbit.start();
    tortoise.start();
    }
    }不知道你是不是已经这么修改了?我这里可以输出如下结果:
    跑≈爬£爬£跑≈爬£爬£跑≈爬£爬£爬£跑≈爬£跑≈爬£爬£跑≈乌龟死亡状态
    跑≈跑≈跑≈跑≈跑≈跑≈跑≈跑≈跑≈跑≈跑≈跑≈跑≈跑≈兔子死亡状态