I'm trying to make a program with 2 racers and it keeps giving me an IllegalThreadStateException
up vote
1
down vote
favorite
I have 2 threads and a main class in my program and whenever I try and run it, The one thread is giving me an IllegalThreadStateException and I'm not sure why. The program needs to make a tortoise and hare race, the tortoise can move 10 meters and never stop until he reaches 300 meters, and the hare can move 100 meters, but needs to rest 90% of the time. Following is my code, if anyone could help me out I would appreciate it. Additionally, when I did get it to run, the Hare thread is just outputting Hare: 0 a million times, so I'm not sure why that is happening either.
Main Class:
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){}
}
}
Tortoise thread:
public class Tortoise extends Thread {
static int position;
static int speed = 10;
@Override
public void run(){
position = speed + 10;
System.out.println("Tortoise: "+position);
}
}
Hare thread:
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);
}
}
}
}
java multithreading netbeans illegalstateexception
New contributor
add a comment |
up vote
1
down vote
favorite
I have 2 threads and a main class in my program and whenever I try and run it, The one thread is giving me an IllegalThreadStateException and I'm not sure why. The program needs to make a tortoise and hare race, the tortoise can move 10 meters and never stop until he reaches 300 meters, and the hare can move 100 meters, but needs to rest 90% of the time. Following is my code, if anyone could help me out I would appreciate it. Additionally, when I did get it to run, the Hare thread is just outputting Hare: 0 a million times, so I'm not sure why that is happening either.
Main Class:
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){}
}
}
Tortoise thread:
public class Tortoise extends Thread {
static int position;
static int speed = 10;
@Override
public void run(){
position = speed + 10;
System.out.println("Tortoise: "+position);
}
}
Hare thread:
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);
}
}
}
}
java multithreading netbeans illegalstateexception
New contributor
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have 2 threads and a main class in my program and whenever I try and run it, The one thread is giving me an IllegalThreadStateException and I'm not sure why. The program needs to make a tortoise and hare race, the tortoise can move 10 meters and never stop until he reaches 300 meters, and the hare can move 100 meters, but needs to rest 90% of the time. Following is my code, if anyone could help me out I would appreciate it. Additionally, when I did get it to run, the Hare thread is just outputting Hare: 0 a million times, so I'm not sure why that is happening either.
Main Class:
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){}
}
}
Tortoise thread:
public class Tortoise extends Thread {
static int position;
static int speed = 10;
@Override
public void run(){
position = speed + 10;
System.out.println("Tortoise: "+position);
}
}
Hare thread:
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);
}
}
}
}
java multithreading netbeans illegalstateexception
New contributor
I have 2 threads and a main class in my program and whenever I try and run it, The one thread is giving me an IllegalThreadStateException and I'm not sure why. The program needs to make a tortoise and hare race, the tortoise can move 10 meters and never stop until he reaches 300 meters, and the hare can move 100 meters, but needs to rest 90% of the time. Following is my code, if anyone could help me out I would appreciate it. Additionally, when I did get it to run, the Hare thread is just outputting Hare: 0 a million times, so I'm not sure why that is happening either.
Main Class:
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){}
}
}
Tortoise thread:
public class Tortoise extends Thread {
static int position;
static int speed = 10;
@Override
public void run(){
position = speed + 10;
System.out.println("Tortoise: "+position);
}
}
Hare thread:
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);
}
}
}
}
java multithreading netbeans illegalstateexception
java multithreading netbeans illegalstateexception
New contributor
New contributor
New contributor
asked Nov 10 at 16:12
PyroGirl8
61
61
New contributor
New contributor
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
You cannot call start more than once on a thread. Thread Objects cannot be reused. You can use a Runnable for that purpose. For more info check this answer: https://stackoverflow.com/a/2324114/10632970
New contributor
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
You cannot call start more than once on a thread. Thread Objects cannot be reused. You can use a Runnable for that purpose. For more info check this answer: https://stackoverflow.com/a/2324114/10632970
New contributor
add a comment |
up vote
1
down vote
You cannot call start more than once on a thread. Thread Objects cannot be reused. You can use a Runnable for that purpose. For more info check this answer: https://stackoverflow.com/a/2324114/10632970
New contributor
add a comment |
up vote
1
down vote
up vote
1
down vote
You cannot call start more than once on a thread. Thread Objects cannot be reused. You can use a Runnable for that purpose. For more info check this answer: https://stackoverflow.com/a/2324114/10632970
New contributor
You cannot call start more than once on a thread. Thread Objects cannot be reused. You can use a Runnable for that purpose. For more info check this answer: https://stackoverflow.com/a/2324114/10632970
New contributor
New contributor
answered Nov 10 at 16:20
Andrei Dumitrescu-Tudor
874
874
New contributor
New contributor
add a comment |
add a comment |
PyroGirl8 is a new contributor. Be nice, and check out our Code of Conduct.
PyroGirl8 is a new contributor. Be nice, and check out our Code of Conduct.
PyroGirl8 is a new contributor. Be nice, and check out our Code of Conduct.
PyroGirl8 is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53240845%2fim-trying-to-make-a-program-with-2-racers-and-it-keeps-giving-me-an-illegalthre%23new-answer', 'question_page');
}
);
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password