El siguiente código conduce a java.lang.IllegalThreadStateException: Thread already started
cuando llamé al start()
método por segunda vez en el programa.
updateUI.join();
if (!updateUI.isAlive())
updateUI.start();
Esto sucede la segunda vez que updateUI.start()
se llama. Lo he pasado varias veces y el hilo se llama y se ejecuta completamente antes de golpear updateUI.start()
.
Llamar updateUI.run()
evita el error pero hace que el hilo se ejecute en el hilo de la interfaz de usuario (el hilo de llamada, como se menciona en otras publicaciones en SO), que no es lo que quiero.
¿Se puede iniciar un hilo solo una vez? Si es así, ¿qué hago si quiero volver a ejecutar el hilo? Este hilo en particular está haciendo algunos cálculos en segundo plano, si no lo hago en el hilo, entonces se hace en el hilo de la interfaz de usuario y el usuario tiene una espera irrazonablemente larga.