У меня есть 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);
}
}
}
}