public class IllegalThreadStateExceptionExample {
protected FooThread fooThread = new FooThread();
public class FooThread extends Thread {
@Override
public void run() {
System.out.println("Foo Thread run!");
}
}
public void runThread() {
fooThread.start();
}
public static void main(String[] args) {
IllegalThreadStateExceptionExample example =
new IllegalThreadStateExceptionExample();
example.runThread();
example.runThread();
}
}
Resultado:
Foo Thread run!
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Unknown Source)
at IllegalThreadStateExceptionExample.runThread(IllegalThreadStateExceptionExample.java:14)
at IllegalThreadStateExceptionExample.main(IllegalThreadStateExceptionExample.java:20)
Según la documentación de la clase:
"Lanzada para indicar que un hilo no está en un estado apropiado para la operación solicitada."
Al parecer cuando un hilo termina su ejecución en el método "run()", queda en un estado en el cual no puede volver a ejecutarse. Se puede solucionar rápidamente simplemente instanciando un nuevo hilo.