当前位置: 代码迷 >> Java相关 >> 龟兔赛跑相关问题
  详细解决方案

龟兔赛跑相关问题

热度:562   发布时间:2009-10-21 16:48:33.0
龟兔赛跑相关问题
兔子类:
public class Rabbit extends Thread
{
    String threadName;
    public Rabbit(String threadName){
    this.threadName=threadName;
    }

    public void run(){
        int length=0;
        while(length<100){
            try{
                 Thread.sleep(1000);//stop 1 sec everytime
             }
            catch(InterruptedException e){
                 e.printStackTrace();
             }
         length+=10;
         System.out.println(this.threadName+"has run :"+length+"miles");
        }
        System.out.println(Thread.currentThread().getName()+"reached!!");
    }
}

乌龟类:
public class  Tortoise implements Runnable
{   String threadName;
    public Tortoise(String threadName){
    this.threadName=threadName;
    }
    public void run()
    {
        for(int length=0;length<100;length+=10){
            System.out.println(this.threadName+"has run :"+length+"miles");
            }
        System.out.println(Thread.currentThread().getName()+"reached!!");
}
}

主方法所在的乌龟兔子类:
public class RabbitTortoise
{
    public static void main(String[] args)
    {   Tortoise tortoise = new Tortoise(tortoise);
        Rabbit rabbit = new Rabbit(rabbit);
        tortoise.setPriority(3);//优先级3
        rabbit.setPriority(1);//优先级1
        Thread thread1 = new Thread(tortoise);
        Thread thread2 = new Thread(rabbit);
        thread1.start();
        thread2.start();


    }
}


运行结果RabbitTortoise 三处出错;
C:\Documents and Settings\KevinGarnett\桌面\Java\7\RabbitTortoise.java:4: 找不到符号
符号: 构造函数 Tortoise(Tortoise)
位置: 类 Tortoise
    {   Tortoise tortoise = new Tortoise(tortoise);
                            ^
C:\Documents and Settings\KevinGarnett\桌面\Java\7\RabbitTortoise.java:5: 找不到符号
符号: 构造函数 Rabbit(Rabbit)
位置: 类 Rabbit
        Rabbit rabbit = new Rabbit(rabbit);
                        ^
C:\Documents and Settings\KevinGarnett\桌面\Java\7\RabbitTortoise.java:6: 找不到符号
符号: 方?setPriority(int)
位置: 类 Tortoise
        tortoise.setPriority(3);//优先级3

应该如何改动?
搜索更多相关的解决方案: 龟兔赛跑  

----------------解决方案--------------------------------------------------------
Tortoise tortoise = new Tortoise(tortoise);
Rabbit rabbit = new Rabbit(rabbit);
既然类中的构造方法是有参的并且是String类型的.
    传参数只能传此类型的.
----------------解决方案--------------------------------------------------------
把乌龟类 的implements Runnable改成extends Thread

然后把主类中的
Tortoise tortoise = new Tortoise(tortoise);
        Rabbit rabbit = new Rabbit(rabbit);
改成 Tortoise tortoise = new Tortoise(“tortoise”);
        Rabbit rabbit = new Rabbit(“rabbit”);


----------------解决方案--------------------------------------------------------
回复 2楼 gameohyes
给龟设置优先级,让它赢该怎么改?
----------------解决方案--------------------------------------------------------
回复 3楼 dadongzicool
给龟设置优先级,让它赢该怎么改?

----------------解决方案--------------------------------------------------------
thread1.setPriority(Thread.NORM_PRIORITY + 3);//在正常的优先级的基础上,使线程thread1的优先级提高


----------------解决方案--------------------------------------------------------
回复 6楼 gameohyes
线程优先级设置后对结果没有影响。在主方法类里面设置优先级,那么子类里面应该如何编写?
----------------解决方案--------------------------------------------------------
JVM以及操作系统会优先处理优先级别高的线程,但不代表这些线程一定会先完成。设定优先级只能建议系统更快的处理,而不能强制。
----------------解决方案--------------------------------------------------------
  相关解决方案