【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《JAVA多线程模拟龟兔赛跑》,欢迎阅读!
JAVA多线程模拟龟兔赛跑!
class Rabbit extends Thread{
Tortoise tor;
int Journey;
int RabbitSpeed;
public Rabbit(int rs,int j,Tortoise tortoise)
{
Journey = j;
RabbitSpeed = rs;
tor = tortoise;
}
synchronized public void run()
{
{
try {
wait(1000); /*无论哪个线程选启动都立即进入等待,无论哪个线程跳出等待都唤醒所有线程*/
} catch (InterruptedException e1) {
e1.printStackTrace();
}
notifyAll();
}
System.out.println("----------兔子起跑了!---------");
while(Journey >= 0)
{
System.out.println("兔子在跑");
Journey = Journey-RabbitSpeed;
if (Journey%7 == 0)/*何时兔子开始睡觉*/
{
try {
System.out.println("兔子在睡觉-_-~~~~!");
sleep(20);/*设置兔子的睡觉时间*/
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
if(Journey < 0)
{
System.out.println("兔子到了终点");
}
}
}
class Tortoise extends Thread{
int Journey;
int TortoiseSpeed;
Rabbit rab;
public Tortoise(int ts,int j ,Rabbit rabbit)
{
Journey = j;
TortoiseSpeed = ts;
rab = rabbit;
}
synchronized public void run()
{
{
try {
wait(1000);/*无论哪个线程选启动都立即进入等待,无论哪个线程跳出等待都唤醒所有线程*/
} catch (InterruptedException e) {
e.printStackTrace();
}
notifyAll();
}
System.out.println("----------龟龟起跑了!---------");
while(Journey >= 0)
{
System.out.println("龟龟在跑");
Journey=Journey-TortoiseSpeed;
}
if(Journey < 0)
{
System.out.println("龟龟到了终点");
}
}
}
public class TortoiseAndRabbit extends Thread{
int Journey ;
int r;
int t;
Rabbit Rab;
Tortoise Tor;
public TortoiseAndRabbit(int rs,int ts,int j)
{
Journey =j;
r = rs;
t = ts;
}
public void run()
{
/*设计初期把每个线程对象传给对方,但在这段程序中并没有使用可以去除*/
Rab = new Rabbit(r,Journey,Tor);
Tor = new Tortoise(t,Journey,Rab);
Rab.setPriority(Thread.MAX_PRIORITY);
Tor.setPriority(Thread.MAX_PRIORITY);
Rab.start();
Tor.start();
}
public static void main(String[] args) {
/*参数一为兔子的速度,参数二是龟龟的速度,参数三是路程*/
new TortoiseAndRabbit(6,2,100).start();
}
}