使用多线程的方法来实现龟兔赛跑问题,使用语言:JAVA
问题描述:
假设乌龟和兔子的步幅是一样的,但是兔子的步频更快,所以兔子走的更快,谁先走到100步就算胜利,并输出胜利者的名字
使用实现Runnable接口的方法来实现
package class0311Test;
//使用实现Runnable接口的方式来实现多线程
public class Class0101RTRace implements Runnable{
//定义一个成员位置变量winner用于存储获胜者的名字,定义在这里可以保证多个线程都可以使用
private String winner = null;
//使用实现接口的方法时需要对run()方法进行重写
public void run(){
//假设乌龟和兔子的步幅是一样的,谁走到100步谁就获胜
for(int i=1;i<=100;i++){
//判断当线程对象是兔子的时候,当兔子走了十步就会休息15ms
//Thread.currentThread(),是获取当前线程的实例.getName()是获取该实例对象的名字
if("rabbit".equals(Thread.currentThread().getName()) && i%10==0){
try {
Thread.sleep(15);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//定义兔子进程的运行速度
if ("rabbit".equals(Thread.currentThread().getName())){
//查看兔子在走第几步
System.out.println("rabbit is running in the "+i+"th step");
//兔子走一秒停1ms,相当于兔子走一步大概需要2ms左右
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//定义乌龟进程的运行速度
if("tortoise".equals(Thread.currentThread().getName())){
//查看乌龟在走第几步
System.out.println("totoise is running in the "+i+"th step");
//乌龟走一秒停2ms,相当于乌龟走一步大概需要3ms左右
try {
Thread.sleep(2);
} catch (InterruptedException e) {
e