欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java多线程经典案例:龟兔赛跑

程序员文章站 2022-05-02 10:09:54
...

1. 案例题目描述:编写龟兔赛跑多线程程序,设赛跑长度为30米
兔子的速度是10米每秒,兔子每跑完10米休眠的时间10秒
乌龟的速度是1米每秒,乌龟每跑完10米的休眠时间是1秒

2. 案例完成思路要求:
1)乌龟定义一个线程,兔子定义一个线程
2)两个线程同时开启
3)提示:可以使用Thread.sleep(毫秒数)来模拟耗时

package com.zjx.thread;
/**
1. 案例题目描述:编写龟兔赛跑多线程程序,设赛跑长度为30米
兔子的速度是10米每秒,兔子每跑完10米休眠的时间10秒
乌龟的速度是1米每秒,乌龟每跑完10米的休眠时间是1秒
2. 案例完成思路要求:
1)乌龟定义一个线程,兔子定义一个线程
2)两个线程同时开启
3)提示:可以使用Thread.sleep(毫秒数)来模拟耗时

 * 龟兔赛跑
 * @author zjx
 *
 */
public class TestTurAndRabbit{
	public static void main(String[] args) {
		//创建乌龟和兔子线程
		Tur tur = new Tur("小乌龟");
		Rabbit rabbit = new Rabbit("小白兔");
		//开始赛跑
		tur.start();
		rabbit.start();
	}
}
//乌龟
class Tur extends Thread{
	public Tur(String name) {
		super(name);//父类构造方法,设置名字
	}
	@Override
	public void run() {
		for(int i = 1;i <= 30; i ++){ //i 代表 米
			try {
				Thread.sleep(1000);//休息1s
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			//每次跑了一米都打印
			System.out.println(Thread.currentThread().getName()+"跑了"+i+"米");
			if (i % 10 == 0) {
				//跑完10米
				try {
					Thread.sleep(1000); //乌龟跑完十米 休息一秒
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
//兔子
class Rabbit extends Thread{
	public Rabbit(String name) {
		super(name);//父类构造方法,设置名字
	}
	@Override
	public void run() {
		for(int i = 1;i <= 30; i ++){ //i 代表 米
			//兔子10米 每秒   1米是 0.1秒
			try {
				Thread.sleep(100);//休息0.1s
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			//每次跑了一米都打印
			System.out.println(Thread.currentThread().getName()+"跑了"+i+"米");
			if (i % 10 == 0) {
				//跑完10米
				try {
					Thread.sleep(10000); //兔子每跑完10米休眠的时间10秒
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
}

java多线程经典案例:龟兔赛跑
你要是想和童话故事一样= = 你让兔子多睡点就好!!!