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);
}
}
}
}









share|improve this question







New contributor




PyroGirl8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
























    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);
    }
    }
    }
    }









    share|improve this question







    New contributor




    PyroGirl8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      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);
      }
      }
      }
      }









      share|improve this question







      New contributor




      PyroGirl8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      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






      share|improve this question







      New contributor




      PyroGirl8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      PyroGirl8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      PyroGirl8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked Nov 10 at 16:12









      PyroGirl8

      61




      61




      New contributor




      PyroGirl8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      PyroGirl8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      PyroGirl8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.
























          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






          share|improve this answer








          New contributor




          Andrei Dumitrescu-Tudor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.


















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });






            PyroGirl8 is a new contributor. Be nice, and check out our Code of Conduct.










             

            draft saved


            draft discarded


















            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
































            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






            share|improve this answer








            New contributor




            Andrei Dumitrescu-Tudor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.






















              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






              share|improve this answer








              New contributor




              Andrei Dumitrescu-Tudor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.




















                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






                share|improve this answer








                New contributor




                Andrei Dumitrescu-Tudor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.









                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







                share|improve this answer








                New contributor




                Andrei Dumitrescu-Tudor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.









                share|improve this answer



                share|improve this answer






                New contributor




                Andrei Dumitrescu-Tudor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.









                answered Nov 10 at 16:20









                Andrei Dumitrescu-Tudor

                874




                874




                New contributor




                Andrei Dumitrescu-Tudor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.





                New contributor





                Andrei Dumitrescu-Tudor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.






                Andrei Dumitrescu-Tudor is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.






















                    PyroGirl8 is a new contributor. Be nice, and check out our Code of Conduct.










                     

                    draft saved


                    draft discarded


















                    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.















                     


                    draft saved


                    draft discarded














                    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




















































































                    Popular posts from this blog

                    Bressuire

                    Vorschmack

                    Quarantine