El siguiente código conduce a java.lang.IllegalThreadStateException: Thread already started
cuando llamé al start()
método segunda vez en el programa.¿Es legal llamar al método de inicio dos veces en el mismo hilo?
updateUI.join();
if (!updateUI.isAlive())
updateUI.start();
esto sucede, el tiempo segundoupdateUI.start()
se llama. Lo he revisado varias veces y se ha llamado al hilo y se ejecuta completamente antes de llegar al updateUI.start()
.
Llamar a updateUI.run()
evita el error pero hace que el subproceso se ejecute en el subproceso de IU (el subproceso de llamada, como se menciona en otras publicaciones en SO), que no es lo que quiero.
¿Puede un hilo ser comenzado sólo una vez? Si es así, ¿qué hago si quiero ejecutar el hilo nuevamente? Este hilo en particular está haciendo algunos cálculos en el fondo, si no lo hago en el hilo de lo que está hecho en el hilo de la interfaz de usuario y el usuario tiene una espera irracionalmente larga.
Por qué ¿No acabas de leer el javadoc? Describe claramente el contrato. –