Running Thread's in Java Throws an Exception

Benjamin Banerjee :

I am trying to create a game and have come across a bizarre issue with the way I choose to run my Threads

The way I have it set up is that each pertinent class has a Thread Object, who's run() function runs the code once. Each is called once every frame.

However whenever I try to run the code I get a java.lang.IllegalThreadStateException and I have no clue why.

Here's an adaptation of the problematic code:

public class Test { 

    public static void main(String[] args) {

        while(true) {

            ThreadA.run(args);
            ThreadB.run(args);

        }

    }

    private static class ThreadA {

        private static Thread thread = new Thread() {

            @Override
            public void run() {

                System.out.println("A");

            }

        };

        public static void run(String[] args) {

            thread.start();

        }

    }
    private static class ThreadB {

        private static Thread thread = new Thread() {

            @Override
            public void run() {

                System.out.println("B");

            }

        };

        public static void run(String[] args) {

            thread.start();

        }

    }

}
sleepToken :

The problem is here:

while(true) {
  ThreadA.run(args);
  ThreadB.run(args);
}

This will loop infinitely. It is never legal to start a thread more than once - even if it has completed. thread.isAlive() won't help you here - if you want to run it again, make a new instance.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=31862&siteId=1