JAVA多线程模拟龟兔赛跑

2022-07-30 09:28:14   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《JAVA多线程模拟龟兔赛跑》,欢迎阅读!
龟兔赛跑,线程,模拟,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();

}

}

本文来源:https://www.wddqxz.cn/5a394c49c850ad02de80419e.html

相关推荐