j用java多线程完成代码,要求如下:有4匹赛马,每匹赛马都是一个线程。每匹赛马都有一个速度(1~10的随机数)和一个起跑线的位置0,他们将在屏幕上移动,直到达到终点线1000米处。
时间: 2024-10-14 17:16:11 浏览: 8
在Java中,你可以使用`Thread`类或更现代的`Runnable`接口以及`ExecutorService`来实现这个多线程模型。首先,你需要创建四个`Thread`对象,每个代表一匹赛马,并且它们有自己的起始位置和速度。这里是一个简单的示例:
```java
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class Horse implements Runnable {
private int speed;
private int position;
private static final int FINISH_LINE = 1000;
public Horse(int speed, int position) {
this.speed = speed;
this.position = position;
}
@Override
public void run() {
while (position < FINISH_LINE) {
System.out.println("Horse " + speed + " at position " + position++);
try {
Thread.sleep(Math.abs(speed * 50)); // 模拟马的速度影响睡眠时间
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Horse " + speed + " finished at position " + FINISH_LINE);
}
}
public class RaceTrack {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(4); // 创建固定大小的线程池
Random random = new Random();
for (int i = 1; i <= 4; i++) {
executor.submit(new Horse(random.nextInt(10) + 1, i * 10)); // 马速范围1到10,起跑线间距10米
}
// 关闭线程池,等待所有任务完成
executor.shutdown();
}
}
```
在这个例子中,我们创建了一个`Horse`类实现了`Runnable`接口,然后在`main`函数中使用`ExecutorService`来启动这些线程。每个赛马会在内部循环中不断更新位置并打印信息,直到到达终点。
阅读全文