gpt4 book ai didi

java - 我正在尝试编写一个包含 2 个赛车手的程序,但它一直给我一个 IllegalThreadStateException

转载 作者:行者123 更新时间:2023-11-30 05:55:40 25 4
gpt4 key购买 nike

我的程序中有 2 个线程和一个主类,每当我尝试运行它时,一个线程就会给我一个 IllegalThreadStateException,我不知道为什么。程序需要进行一场龟兔赛跑,乌龟可以移动10米,直到300米才停止,兔子可以移动100米,但需要90%的时间休息。以下是我的代码,如果有人可以帮助我,我将不胜感激。此外,当我让它运行时,Hare 线程只是输出 Hare: 0 一百万次,所以我也不确定为什么会发生这种情况。

主类:

package runnerthread;

public class RunnerThread extends Thread{

public static void main(String[] args) {
System.out.println("Get set...Go!");
int hPosition = Hare.position;
int tPosition = Tortoise.position;
Thread hare = new Thread(new Hare());
Thread tortoise = new Thread(new Tortoise());
try{
while(hPosition<300 && tPosition<300){
tortoise.start();
hare.start();
Thread.sleep(300);
}
}catch(InterruptedException e){}
}
}

乌龟线:

public class Tortoise extends Thread {
static int position;
static int speed = 10;
@Override
public void run(){
position = speed + 10;
System.out.println("Tortoise: "+position);
}
}

野兔线程:

import java.util.Random;


public class Hare extends Thread{
static int position;
int speed = 100;
int restingPercent = 90;
Random random = new Random();
int randomNum = random.nextInt((100-1)+1) + 1;
@Override
public void run(){
while(position<300){
if (randomNum<=restingPercent){
System.out.println("Hare: "+position);
}else {
position+=100;
System.out.println("Hare: "+position);
}
}
}
}

最佳答案

您不能在一个线程上多次调用 start。线程对象不能重复使用。您可以使用 Runnable 来实现此目的。欲了解更多信息,请查看此答案:https://stackoverflow.com/a/2324114/10632970

关于java - 我正在尝试编写一个包含 2 个赛车手的程序,但它一直给我一个 IllegalThreadStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53240845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com