Le code suivant mène au java.lang.IllegalThreadStateException: Thread already started
moment où j'ai appelé la start()
méthode une deuxième fois dans le programme.
updateUI.join();
if (!updateUI.isAlive())
updateUI.start();
Cela se produit la deuxième fois updateUI.start()
est appelée. Je l'ai parcouru plusieurs fois et le thread est appelé et se termine complètement avant de frapper updateUI.start()
.
L'appel updateUI.run()
évite l'erreur mais provoque l'exécution du thread dans le thread de l'interface utilisateur (le thread appelant, comme mentionné dans d'autres articles sur SO), ce qui n'est pas ce que je veux.
Un fil de discussion peut-il être démarré une seule fois? Si tel est le cas, que dois-je faire si je veux relancer le fil? Ce thread particulier fait un calcul en arrière-plan, si je ne le fais pas dans le thread, c'est fait dans le thread de l'interface utilisateur et que l'utilisateur a une attente déraisonnablement longue.